[ERLEDIGT]VirtualStringTree --> Doppelclick soll Edit starten

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
Zvoni
Beiträge: 732
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

[ERLEDIGT]VirtualStringTree --> Doppelclick soll Edit starten

Beitrag von Zvoni »

Mahlzeit.

Ich hab einen VirtualStringTree mit mehreren Spalten.
Der Baum als auch die Werte in der vierten Spalte werden gezeigt.
Ich kann die Werte ändern, indem ich das "Feld" markiere, dann entweder F2 drücke oder LANGSAM hintereinander zwei Clicks mache.

Frage: Wie bekomme ich es hin, dass ein Doppelclick an der Stelle der Spalte wie ein F2 funktioniert?
Mein Editor ist ein TComboBox was auch als solches für F2 und langsame 2 Clicks funktioniert

OnColumnDblClick habe ich schon gefunden, aber wie dann weiter?

Hinweis: in den TreeOptions/MiscOptions des Trees selbst, habe ich schon die Optionen toEditOnClick und toEditOnDblClick auf True
Reagiert aber nicht

Code: Alles auswählen

procedure TFormCatalogue.vstCompetencesColumnDblClick(Sender: TBaseVirtualTree;
  Column: TColumnIndex; Shift: TShiftState);
begin
  If Column=3 Then
    Begin
        // ??
    end;
end;             
EDIT: Jetzt wird es skurril:
Das Event OnColumnDblClick wird nicht mal gefeuert (Hab dummy-code im Event, und nen Breakpoint drauf)
Hä?
Zuletzt geändert von Zvoni am Do 3. Sep 2026, 11:20, insgesamt 1-mal geändert.
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
Zvoni
Beiträge: 732
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: VirtualStringTree --> Doppelclick soll Edit starten

Beitrag von Zvoni »

Gefunden.

Es ist das Event OnNodeDblClick

Code: Alles auswählen

procedure TFormCatalogue.vstCompetencesNodeDblClick(Sender: TBaseVirtualTree;
  const HitInfo: THitInfo);
begin
  //Memo1.Append('Node-DblClick: Level='+vstCompetences.Text[HitInfo.HitNode,2]);
  If vstCompetences.Text[HitInfo.HitNode,2]='3' Then
    Begin
      PostMessage(vstCompetences.Handle, WM_KEYDOWN, VK_F2, 0);
      //ShowMessage('Erfolg');
    end;
end;            
Sieht trotzdem irgendwie falsch aus......
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1831
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: VirtualStringTree --> Doppelclick soll Edit starten

Beitrag von fliegermichl »

Wenn man bei MiscOptions toToggleOnDblClick rausnimmt, dann wird der Editor aktiviert, allerdings auch erst nach 2 Sekunden.

Benutzeravatar
Zvoni
Beiträge: 732
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: VirtualStringTree --> Doppelclick soll Edit starten

Beitrag von Zvoni »

fliegermichl hat geschrieben: Do 3. Sep 2026, 11:52 Wenn man bei MiscOptions toToggleOnDblClick rausnimmt, dann wird der Editor aktiviert, allerdings auch erst nach 2 Sekunden.
Och Menno......
toToggleOnDblClick sorgt dafür, dass bei DoubleClick auf nen Node der Node aus-/einklappt.
Lass ich das weg, damit der Edit funzt, brechen die User sich nen Wolf mit der Maus das "+" zu treffen, um den Node wieder aufzuklappen.

Die 2 Sekunden sollten aber irgendwo in den Delay-Optionen einstellbar sein.
EditDelay-Eigenschaft glaube ich.

grmpf....ich lass es jetzt so wie es ist

Danke dennoch
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1831
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: [ERLEDIGT]VirtualStringTree --> Doppelclick soll Edit starten

Beitrag von fliegermichl »

Du könntest in SelectionOptions toExtendedFocus auf True setzen und im Tree.OnClick schreibst du

Code: Alles auswählen

procedure TForm1.TreeClick(Sender: TObject);
begin
 if (Tree.FocusedNode <> nil) and (Tree.FocusedColumn = 3) then Tree.EditNode(Tree.FocusedNode, Tree.FocusedColumn);
end;
Dann geht der Tree sofort in den Editmode, wenn der Anwender auf die 3. Spalte klickt.

Benutzeravatar
Zvoni
Beiträge: 732
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: [ERLEDIGT]VirtualStringTree --> Doppelclick soll Edit starten

Beitrag von Zvoni »

fliegermichl hat geschrieben: Do 3. Sep 2026, 13:04 Du könntest in SelectionOptions toExtendedFocus auf True setzen und im Tree.OnClick schreibst du

Code: Alles auswählen

procedure TForm1.TreeClick(Sender: TObject);
begin
 if (Tree.FocusedNode <> nil) and (Tree.FocusedColumn = 3) then Tree.EditNode(Tree.FocusedNode, Tree.FocusedColumn);
end;
Dann geht der Tree sofort in den Editmode, wenn der Anwender auf die 3. Spalte klickt.
OHA!
Vielen Dank dafür.
Werd ich mir mal vormerken!

Bin mir nicht sicher, ob die User das so wollen.
Der Editor ist eine ComboBox, und ich weiss jetzt nicht, ob die das so wollen, dass wenn sie in der Spalte auf einen Wert clicken, dass die ComboBox sofort aufklappt.

hmmm...... wäre dann vielleicht eher eine Option für TreeDblClick.
Werd ich mal mit rumspielen.

Vielen Dank nochmal!
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1831
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: [ERLEDIGT]VirtualStringTree --> Doppelclick soll Edit starten

Beitrag von fliegermichl »

Zvoni hat geschrieben: Do 3. Sep 2026, 15:08 Bin mir nicht sicher, ob die User das so wollen.
Der Editor ist eine ComboBox, und ich weiss jetzt nicht, ob die das so wollen, dass wenn sie in der Spalte auf einen Wert clicken, dass die ComboBox sofort aufklappt.
...
Die Combobox muss ja nicht gleich aufklappen. Wenn sie schonmal sichtbar ist, kann der User entscheiden, ob er das Dropdownsymbol anklickt oder etwas in das Editfeld eingibt.

Antworten