Announcement

Collapse
No announcement yet.

Zehner-Block-Taste wird nicht richtig abgefangen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zehner-Block-Taste wird nicht richtig abgefangen

    Hallo,<p>
    ich möchte, dass der User in einer Eingabe-Maske mit der Divisions-Taste vom Zehnerblock (Key=VK_DIVIDE) alle Änderungen abspeichert.
    Dazu fange ich über Form1.OnKeyDown (Form1.KeyPreview:=True) das Ereignis ab, rufe die Speichern-Routine und setze Key:=0. Es wird allerdings nichts gespeichert und in den verwendeten VCL-Komponenten erscheint das Zeichen / !? Gibt es eine Möglichkeit ohne sämtliche Eingabefelder mit Habdlern zu versehen oder gar neue Objekte abzuleiten ?<p>
    Gruß Marcus

  • #2
    Nachtrag<p>
    Es wird natürlich schon die Speichern-Methode aufgerufen, aber bei Comboboxen wird die Drop-Down-Liste geöffnet.<p>
    Marcu

    Comment


    • #3
      Macht Numlock an und aus einen Unterschied

      Comment


      • #4
        Ich habe den Fehler gefunden.<br>
        1. ich verwende dxLookUpEdit (Combobox) von DevExpress, die sich öffnen (normale Standard-Combo tut das nicht)<br>
        2. der Zehnerblock Divide wird wie ein normaler Slash / behandelt und erscheint als Zeichen in der Komponente (auch bei Standard)<br>
        Ich versuche nun auf / und * als Daten in meinen Eingabefeldern zu verzichten und reagiere auf das OnKeyPress(Char)-Ereignis.<p>
        Gibt es trotzdem eine bessere Lösung - das ist ja nicht besonders elegant ?<br>Man muss wahrscheinlich den Message-Handler des Forms umschreiben. Numlock macht übrigens keinen Unterschied

        Comment


        • #5
          Es ist wie verhext: Wenn im der Form.KeyDown-Ereignis ein PopUpMenu aufgerufen wird, erhält das Editfeld vor dem Öffnen oder nach dem Schließen des PopUpMenus nicht den (unerwünschten) Tastendruck. Das sieht so aus:<br>
          <pre>procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
          Shift: TShiftState);
          begin
          if Key=VK_DIVIDE then begin
          Key:=0;
          PopupMenu1.Popup(100,100);
          end;
          end;<pre><br>
          OK, ich kann nun ein PopUpMenu verwenden, aber der Nachteil ist der, dass nach dem Öffnen des PopUpMenus kein Item markiert ist und mittels der Enter-Taste bestätigt werden kann. Das Property Default:=True bringt auch nicht den gewünschten Effekt. Ich wollte es mit SendMessage versuchen und einen VK_DOWN an das Menu senden, aber das hat nicht funktioniert

          Comment

          Working...
          X