Einzelnen Beitrag anzeigen

Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#34

AW: VirtualTreeView Editfelder, ComboBox und andere

  Alt 11. Apr 2016, 19:56
Zitat von Jaenicke:
Hast du denn einmal in die Doku geschaut? Da ist das eigentlich sehr gut beschrieben:
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Wenn du die Tab Taste selber behandeln willst, musst du in dem Control, das die entsprechenden Messages bekommt, WM_GETDLGCODE entsprechend des bereits geposteten Codes implementieren. Damit sagst du Windows, dass es die Standardbehandlung für Tab (zum nächsten Steuerelement springen) nicht ausführen und stattdessen die Messages zur Behandlung des Tastendrucks schicken soll.

Schaue ich mir jetzt gleich mal an.


Im weiteren habe ich noch ein Problem gefunden. Die Tasten VK_UP, und VK_DOWN gehen. Allerdings, denke ich, das die Funktion ja folgendes machen soll... (siehe Kommentare

Delphi-Quellcode:
    VK_UP,
    VK_DOWN,
    VK_LEFT,
    VK_RIGHT:
      begin
        CanEndEdit := Shift = []; //CanEndEdit wird gesetzt, wenn keine Shift Taste gedrückt ist
        if FEdit is TComboBox then //Hier wird geprüft, ob FEdit vom Typ ComboBox ist
          CanEndEdit := CanEndEdit and not TComboBox(FEdit).DroppedDown;
          {CanEndEdit wird gesetzt, wenn vorab CanEndEdit gesetzt und TComboBox kein
          geöffnetes DroppedDown Menü hat. Wäre das DroppedDown Menü geöffnet, soll
          der nächste Eintrag im Menü gewählt werden. Das funktioniert so nicht. Der
           nächste Eintrag wird zwar gewählt, aber dann sofort das DroppedDown Menü geschlossen}

        if CanEndEdit then
          {Ist kein DroppedDown Menü geöffnet oder kein TComboBox oder kein Shift, müsste
           dann müsste hier CanEndEdit noch true sein}
 
          begin
            PostMessage(FTree.Handle, WM_KEYDOWN, Key, 0);
            {Versteh ich wieder nicht so richtig. Ich denke hier wird geprüft, welcher
            Key und diese Message wird dann verarbeitet. Soll heißen, dass Bewegen mit den
            Taste Links, Rechts, Auf und Ab. Hier funktioniert die Navigation auch tadellos,
            allerdings, wird nur beim VK_UP und VK_DOWN die Funktion "SaveChanges" aufgerufen.
            Dies liegt ja vermutlich daran, das der Node nicht verlassen wird, sondern nur das
             Column gewechselt. Aber eine Idee zur Lösung fehlt mir trotzdem aktuell}

            Key := 0;
            { Abschließen wird der Key auf 0 gesetzt damit keine weitere Bearbeitung
              entsprechend der normalen Windows Funktionen erfolgt }

          end;
      end;
Ich hoffe, dass ist so und jemand kann mir mal erklären, woran das Problem liegt und wie ich das abstellen kann.

Danke nochmal und Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat