TTreeView editieren
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
TTreeView editieren
Hallo,
Wenn ich in einem TTreeView-Node editiere, dann werden die Events:
- OnEditing bei Start Editieren
- OnEdited bei Ende Editieren aufgerufen.
Damit versetze ich eine TQuery in Edit-Mode und anschließend poste ich diese Änderung.
Nun zum Soderfall:
- OnEditing bei Start Editieren
- ESC-Taste, beendet Edit-Vorgang und beläßt den alten Inhalt (ist ja auch gut so.)
Nun ist meine Query immer noch im Edit-Mode. Gibt es von TTreeView ein Event, das verschickt wird wenn das Edit mit ESC abgebrochen wird?
Das Key-Press Event tut nicht, denn während dem Edit ist eine andere Komponente da.
Vielen Dank für eure Hilfe.
Wenn ich in einem TTreeView-Node editiere, dann werden die Events:
- OnEditing bei Start Editieren
- OnEdited bei Ende Editieren aufgerufen.
Damit versetze ich eine TQuery in Edit-Mode und anschließend poste ich diese Änderung.
Nun zum Soderfall:
- OnEditing bei Start Editieren
- ESC-Taste, beendet Edit-Vorgang und beläßt den alten Inhalt (ist ja auch gut so.)
Nun ist meine Query immer noch im Edit-Mode. Gibt es von TTreeView ein Event, das verschickt wird wenn das Edit mit ESC abgebrochen wird?
Das Key-Press Event tut nicht, denn während dem Edit ist eine andere Komponente da.
Vielen Dank für eure Hilfe.
EleLa - Elektronik Lagerverwaltung - www.elela.de
Re: TTreeView editieren
Ich glaube nicht.
Kannst du das nicht anders lösen? z.B. OnExit oder auf der Form mit KeyPreview, oder einfach bevor du eine nächste Aktion ausführst?
Kannst du das nicht anders lösen? z.B. OnExit oder auf der Form mit KeyPreview, oder einfach bevor du eine nächste Aktion ausführst?
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: TTreeView editieren
Vielen Dank für die Antwort.
Ich erkenne, wenn im Baun ein anderer Eintrag angeklickt wird, dass es ein anderer Node ist. Ist aber "unschön" und erst später wird der Button Disabled.
Ich hab da auch ein "Abbruch" Button drin, wenn ich den drücke, dann wird erst mal das TTreeView positiv quittiert und ich muss zurück rechnen, und die Eingabe im Nachhinen rückgängig machen
.
(Halt die üblichen Tasten Neu,Speichern,Abbruch,Löschen wie bei einer Datenbank-Anwendung)
Schade, dass es nicht einen "Trick" gibt oder das Event "OnEditCancel" oder besser "OnEditEnd".
Ich erkenne, wenn im Baun ein anderer Eintrag angeklickt wird, dass es ein anderer Node ist. Ist aber "unschön" und erst später wird der Button Disabled.
Ich hab da auch ein "Abbruch" Button drin, wenn ich den drücke, dann wird erst mal das TTreeView positiv quittiert und ich muss zurück rechnen, und die Eingabe im Nachhinen rückgängig machen

(Halt die üblichen Tasten Neu,Speichern,Abbruch,Löschen wie bei einer Datenbank-Anwendung)
Schade, dass es nicht einen "Trick" gibt oder das Event "OnEditCancel" oder besser "OnEditEnd".
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 320
- Registriert: Sa 21. Mär 2009, 17:31
- OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4)
- CPU-Target: 64 Bit
Re: TTreeView editieren
Ist das in Delphi auch so? Sonst könntest du es als LCL-Fehler melden.
Oder einfach die LCL umprogrammieren, die relevante Funktion ist CustomTreeView.EndEditing(Cancel: boolean) in treeview.inc:4664.
Oder TCustomTreeView.EditorKeyDown in treeview.inc:5061. (die ließe sich auch in einer abgeleiteten Klasse überschreiben)
Oder einfach die LCL umprogrammieren, die relevante Funktion ist CustomTreeView.EndEditing(Cancel: boolean) in treeview.inc:4664.
Oder TCustomTreeView.EditorKeyDown in treeview.inc:5061. (die ließe sich auch in einer abgeleiteten Klasse überschreiben)
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: TTreeView editieren
Versuch mal die Tasten manuell abzufangen. Es gibt z.b. meine ich eine Methode die irgenetwas mit Abbrechen zu tun hat. CancelEdit oder AbortEdit oder so.
Das Gegenstück für F2 müsste edit oder so ähnlich sein. Damit müsstest du sie Manuell Aktivieren können.
(Wenn ich dich richtig verstanden habe).
Das Gegenstück für F2 müsste edit oder so ähnlich sein. Damit müsstest du sie Manuell Aktivieren können.
(Wenn ich dich richtig verstanden habe).
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: TTreeView editieren
@BeniBela:
Sowas:

Sowas:
Code: Alles auswählen
comctrls:
1969:
TTVEditEndEvent = procedure(Sender: TObject; Node: TTreeNode;
Cancel: Boolean) of object;
2400:
FOnEditEnd: TTVEditEndEvent;
2585:
property OnEditEnd: TTVEditEndEvent read FOnEditEnd write FOnEditEnd;
treeview.inc:4688
if Assigned(FOnEditEnd) then FOnEditEnd(Self, FEditingItem, Cancel);

EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 320
- Registriert: Sa 21. Mär 2009, 17:31
- OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4)
- CPU-Target: 64 Bit
Re: TTreeView editieren
Ja, genau.
(so können Fremde natürlich schlechter dein Projekt compilern, aber
eventuell akzeptiert das LCL-Team es ja als allgemeinen Patch)
(so können Fremde natürlich schlechter dein Projekt compilern, aber
eventuell akzeptiert das LCL-Team es ja als allgemeinen Patch)
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: TTreeView editieren
Denen würde ich das gerne posten. Ich denke es hat gute Chancen dass es akzeptiert wird, denn nur mit dieser Erweiterung kann man direkt eine TQuery richtig behandeln.
Ich hab leider keine Ahnung wie ich das richtig mache, so dass es in zukünftigen Versionen drin ist, kannst Du mir bitte helfen?
Edit: Ich hab das bei mir jetzt einpegroggt und es tut!
Das fehlte noch:
Damit das neue Event im Objektinspektor sichtbar wird.
Anbei die geänderten Dateien.
Ich hab leider keine Ahnung wie ich das richtig mache, so dass es in zukünftigen Versionen drin ist, kannst Du mir bitte helfen?
Edit: Ich hab das bei mir jetzt einpegroggt und es tut!
Das fehlte noch:
Code: Alles auswählen
comctrls:
2738: property OnEditEnd;
Anbei die geänderten Dateien.
- Dateianhänge
-
- treeview.inc
- C:\Lazarus\lcl\include\
- (146.19 KiB) 90-mal heruntergeladen
-
- comctrls.pp
- C:\Lazarus\lcl\
- (119.65 KiB) 79-mal heruntergeladen
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: TTreeView editieren
Ich habe mal mit "diff" die Änderungen gespeichert. Ich habe das zum ersten mal benutzt und habe keine Ahnung ob diese *.diff Dateien richtig sind.
Kann das bitte jmd anschauen?
Kann das bitte jmd anschauen?
- Dateianhänge
-
treeview.diff
- (87 Bytes) 88-mal heruntergeladen
-
comctrls.diff
- (317 Bytes) 79-mal heruntergeladen
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: TTreeView editieren
Das ist doch kein diff.
Ein Diff sieht so aus (aus Wiki kopiert)
Ein Diff sieht so aus (aus Wiki kopiert)
Code: Alles auswählen
--- /path/to/original ''timestamp''
+++ /path/to/new ''timestamp''
@@ -1,3 +1,9 @@
+This is an important
+notice! It should
+therefore be located at
+the beginning of this
+document!
+
This part of the
document has stayed the
same from version to
@@ -5,16 +11,10 @@
be shown if it doesn't
change. Otherwise, that
would not be helping to
-compress the size of the
-changes.
-
-This paragraph contains
-text that is outdated.
-It will be deleted in the
-near future.
+compress anything.
It is important to spell
-check this dokument. On
+check this document. On
the other hand, a
misspelled word isn't
the end of the world.
@@ -22,3 +22,7 @@
this paragraph needs to
be changed. Things can
be added after it.
+
+This paragraph contains
+important new additions
+to this document.
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: TTreeView editieren
Wie mach ich das richtig? Gibts irgendwo ein Tutorial, wenn möglich auf Deutsch 
Oder kann jmd mir eine Zeile Posten, die ich in der Dos-Box eingebe, als Beispiel?

Oder kann jmd mir eine Zeile Posten, die ich in der Dos-Box eingebe, als Beispiel?
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 250
- Registriert: Di 16. Dez 2008, 20:13
- OS, Lazarus, FPC: aptosid (aptosid.com); Lazarus SVN gtk2+qt4; FPC 2.4.0
- CPU-Target: 32/64Bit
Re: TTreeView editieren
http://wexler-robert.de/node/20" onclick="window.open(this.href);return false;
Die Manpage von diff sollte aber auch einiges erklären ^^
mfg _X_
Die Manpage von diff sollte aber auch einiges erklären ^^
mfg _X_
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: TTreeView editieren
Super, danke, ich habs mal gemacht, anbei das .diff
So ist das gut?
So ist das gut?
- Dateianhänge
-
patchfile.diff
- (2.05 KiB) 89-mal heruntergeladen
EleLa - Elektronik Lagerverwaltung - www.elela.de
- af0815
- Lazarusforum e. V.
- Beiträge: 6780
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: TTreeView editieren
Frage:
oder
Willst du Cancel übergeben, nur als Information oder es ändern lassen ?
Code: Alles auswählen
TTVEditEndEvent = procedure(Sender: TObject; Node: TTreeNode; Cancel: Boolean) of object;
Code: Alles auswählen
TTVEditEndEvent = procedure(Sender: TObject; Node: TTreeNode;var Cancel: Boolean) of object;
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: TTreeView editieren
Ja, so sieht ein guter Diff aus.MmVisual hat geschrieben:Super, danke, ich habs mal gemacht, anbei das .diff
So ist das gut?
Damit's sich noch gut einlesen lässt, würde ich von Hand noch das da anpassen:
Code: Alles auswählen
--- lcl_old\comctrls.pp Tue Aug 10 04:07:48 2010
+++ lcl\comctrls.pp Tue Aug 31 08:07:21 2010
