Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TreeView-Bug beim onEdited-Event? Daten sind durcheinander! (https://www.delphipraxis.net/146526-treeview-bug-beim-onedited-event-daten-sind-durcheinander.html)

Alaitoc 22. Jan 2010 17:10

Re: TreeView-Bug beim onEdited-Event? Daten sind durcheinand
 
Das OnChange-Event vom TTreeview wird aber laut der Hilfe, auch beim Auswählen bzw. Wechseln eines Knotens ausgeführt.
Hm hat vielleicht TTreeNode irgendein Event das du nutzen kannst?
Das du den Knoten jeweils beim Erstellen ein Event zuweißt?

MfG Alaitoc

PS: Schönes Wochenende *g*

TheMiller 22. Jan 2010 17:14

Re: TreeView-Bug beim onEdited-Event? Daten sind durcheinand
 
Zitat:

PS: Schönes Wochenende *g*
Vielen Dank, aber das lässt mir jetzt doch keine Ruhe.

Es stimmt, das OnChage wird auch dann ausgeführt, wenn es - nach meinen Vorstellungen - nicht gewünscht ist. Und immer wieder die Daten neu laden etc. ist beim onChange einfach zu viel.

Ich denke, ich werde es mit einer Message lösen - zumindest vorübergehend.

Vielen Dank!

busybyte 22. Jan 2010 17:26

Re: TreeView-Bug beim onEdited-Event? Daten sind durcheinand
 
also mit dem anschliessenden
Delphi-Quellcode:
S:=Node.Text;
bin ich voll zufrieden, mit der Message kommt es auf nen Versuch an ob die vor oder nach dem Rücksprung in die Procedure edit(protected) des treeviews abgearbeitet wird.
Delphi-Quellcode:
unit ComCtrls;

procedure TCustomTreeView.Edit(const Item: TTVItem);
var
  S: string;
  Node: TTreeNode;
begin
  with Item do
  begin
    Node := GetNodeFromItem(Item);
    if pszText <> nil then
    begin
      S := pszText;
      if Assigned(FOnEdited) then FOnEdited(Self, Node, S);
      if Node <> nil then Node.Text := S;
    end
    else if Assigned(FOnCancelEdit) then FOnCancelEdit(Self, Node);
  end;
end;

RWarnecke 22. Jan 2010 17:45

Re: TreeView-Bug beim onEdited-Event? Daten sind durcheinand
 
Eine ganz nadere Frage, warum willst Du denn den Tree nochmals komplett neu laden, nachdem eine Node geändert wird ? Ich würde das ganz weglassen und nur die Änderung des TreeViews in die Datenbank schreiben und mehr nicht.

TheMiller 22. Jan 2010 17:54

Re: TreeView-Bug beim onEdited-Event? Daten sind durcheinand
 
Zitat:

Zitat von RWarnecke
Eine ganz nadere Frage, warum willst Du denn den Tree nochmals komplett neu laden, nachdem eine Node geändert wird ? Ich würde das ganz weglassen und nur die Änderung des TreeViews in die Datenbank schreiben und mehr nicht.

Also... das kann ich dir jetzt grad nicht so erklären :gruebel: Hab das auch grad meinen Kumpel gefragt und der kann das auch net so erklären ;)

Ich würde sagen, man versteift sich manchmal auf ein Problem, ohne wirklich rational zu denken. - Das ist schon fast peinlich ;)

Ich werd's so machen!

RWarnecke 22. Jan 2010 19:08

Re: TreeView-Bug beim onEdited-Event? Daten sind durcheinand
 
Tja, ich bin da manchmal genau so :roteyes: Aber dazu gibt es ja die DP, die einem wieder die Augen öffnet. :thumb:

RWarnecke 23. Jan 2010 08:45

Re: TreeView-Bug beim onEdited-Event? Daten sind durcheinand
 
Mir ist da noch eine Idee eingefallen. Du kannst das OnChange-Event benutzen. Du setzt einfach die Property Tag vom TreeView auf einen Wert im OnEdited-Event. Diesen Wert fragst Du im OnChange-Event ab. Stimmt der Wert, startest Du den Neuaufbau des TreeViews und setzt danach die Property Tag wieder zurück auf den ursprünglichen Wert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz