Ergebnis 1 bis 20 von 47

Thema: Delphi - Fragen!

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zitat Zitat von Crash-Override Beitrag anzeigen
    Schau mal hier: http://dsdt.info/grundlagen/codes/vks.php

    VK_BACK oder auch $08. VK_Back wird aber nur für KeyUP/KeyDown gehen.
    Habe es noch nicht verstanden.
    Code:
    if not (Key in ['VK_BACK']) then
      Key := #0;
    So geht es nicht...

  2. #2
    Zitat Zitat von PX Beitrag anzeigen
    Habe es noch nicht verstanden.
    Code:
    if not (Key in ['VK_BACK']) then
      Key := #0;
    So geht es nicht...
    Klick mal mit gedrückter CTRL/STRG Taste auf VK_BACK und du wirst sehen es ist eine Vordefinierte const (VK_BACK = 8; in der Unit "Windows"). Aber Key ist wie du oben siehst ein Char (oder ein Byte im Grunde, da es ASCII Chars bis max. Nr. 255 sind. Also schreibst du entweder #8 (Das sagt Delphi du möchstest einen Char mit dem Wert 8) oder du wandelst deine Konstanze (im Grunde ja auch 8) in ein Char um. Dafür gibt es den Befehl Chr().

    Code:
    procedure TXYZ.OnKeyPress(Sender: TObject; var Key: Char);
    begin
      if Key = Chr(VK_Back) then
        // Whatever...
    end;
    OnKeyPress liefert eben nur Char-Werte. OnKeyUp/OnKeyDown liefern dir den Wert als "Word" (= 4Byte Integer also ein normales Integer in Delphi). Hier würde die Umwandlung ausbleiben. Der Unterschied ist die Auslösung der Ereignisse.

    OnKeyDown wird ausgelöst wenn der Nutzer die Taste runterdrückt.
    OnKeyUp wird ausgelöst wenn der Nutzer die Taste loslässt.
    OnKeyPress wird ausgelöst wenn der Nutzer die Taste runterdrückt und zusätzlich nach einiger Zeit wieder, ähnlich wie wenn man in einem Memo "A" gedrückt hält. Zuerst kommt ein "A", wie gewollt und nach einigen Millisekunden viele "A"s mehr und zwar diesmal recht schnell hintereinander, also mit weniger Abstand als das erste und das zweite.

  3. #3
    Wie wird die maximale Charakteranzahl eines Editfeldes begrenzt?

    Edit: Achja, wie lautet eigentlich der Tastencode für Enter?

    Geändert von Expresseon (07.01.2008 um 18:40 Uhr)

  4. #4
    Enter == Return -> #13, VK_RETURN 0D Return-Taste

    Ich wuerde allerdings immer die VK_* Konstanten verwenden. Zum einen erleichtert das die Portierbarkeit des Programms, zum anderen ist es auch fuer dich leichter lesbar.

  5. #5
    Einige Bilddateien liegen in einem normalen Ordner meines projektes und werden durch den Pfad ganz einfach gerufen:
    Code:
    ... LoadFromFile('Bilder\Bild 1.bmp') ...
    Das funktioniert auch prima. Nur möchte ich den Bilderordner verschlüsseln, bzw. in ein Archiv stecken, damit nicht jeder die Dateien so einfach einsehen kann. Wie muss ich jetzt den Pfad zum aufrufen der Bilddateien ändern?

    Edit: Möchte immernoch wissen: Wie wird die maximale Charakteranzahl eines Editfeldes begrenzt?
    Außerdem interessiere ich mich für eine Art "Screenshotsperre" innerhalb eines gesamten Delphiprojektes, falls es so etwas gibt.

    Geändert von Expresseon (10.01.2008 um 18:57 Uhr)

  6. #6
    Das haengt wohl von deiner Verschluesselung bzw. deinem Archiv ab.
    IdR kannst du auf sowas nicht einfach so wie auf ein Dateisystem zugreifen.
    Die einfachste Variante waere wohl, die Dateien zu entschluesseln (wie das geht, musst du deiner Verschluesslungs- oder Archivierungsbibliothek entnehmen), die z.B. im lokalen Temp Ordner zu speichern, darauf ein LoadFromFile zu machen und am ende wieder zu loeschen.

    Es kann auch sein, dass es eine LoadFromStream oder LoadFromMemory Methode gibt, aber dafuer wuerde ich jetzt auf anhieb nicht die Hand ins Feuer legen. ist bei mir schon etliche Jahre her. Ansonsten gibt es immer noch die Moeglichkeit, mit der (Windows-)API direkt aus dem Speicher ein Bitmap-Objekt zu erstellen und mittels bitblt auf den Canvas deiner Zeichenflaeche zu blitten (Stichwort: TBitmap.Handle bzw TCanvas.Handle).

  7. #7
    Habe jetzt etwas über einen sehr komplizierten Vorgang zum Lesen aus Archiven gefunden... Nunja, mich interessiert viel brennender die Begrenzung der Zeichenzahl im Editfeld. In diesem Feld ist übrigens VK_RETURN freigeschaltet, aber trotzdem wird das zugeordnete OnEnter-Ereignis nicht ausgeführt. Warum?

  8. #8
    Zitat Zitat von PX Beitrag anzeigen
    Nunja, mich interessiert viel brennender die Begrenzung der Zeichenzahl im Editfeld.
    Hat Crash doch schon geschrieben:

    Zitat Zitat von Crash-Override
    Ansonsten ist die maximale Stringlänge bei Edits in MaxLength gespeichert, wer hätte es gedacht
    Einfach in den Eigenschaften des jeweiligen Edit-Felds ändern...

  9. #9
    Hab ich übersehns. Danke dir.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •