Delphi-PRAXiS

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_Change "rückgängig" machen, Selected-Eigenschaft (https://www.delphipraxis.net/42658-treeview_change-rueckgaengig-machen-selected-eigenschaft.html)

Christian123 22. Mär 2005 09:16


Treeview_Change "rückgängig" machen, Selected-Eige
 
Folgendes Problem:

Beim Anklicken eines Nodes im Treeview wird das Change_ereignis ausgelöst.
in diesem finden bei mir Überprüfungen statt.
Ich habe unter anderem Folgende Zeile im Code.

treeview1.Items[inttreeselected].Selected := true

Sinn und Zweck: Bei einer fehlgeschlagenen Überprüfung soll der zuvor aktive Node wieder als aktiv dargestellt werden.
Jetzt hab ich aber das Problem, dass diese Zeile wiederum anscheinend auch ein Change-Ereignis
auslöst und der Code also ein zweites mal durchlaufen wird.
Gibt es eine Einfache Möglichkeit, um einen Node aktiv zu setzen, ohne, dass dieses Ereignis eintritt?
Oder hab ich schon die Lösung, auch wenn es nciht elegant aussieht:

if (inttreeanswer = 0)then
begin
antwort := MessageDlg(('Werte wurden geändert. Speichern?'), mtConfirmation,
[mbYes, mbNo, mbCancel], 0);

if antwort = mrCancel then
begin
inttreeanswer := 1;
treeview1.Items[inttreeselected].Selected := true ;
inttreeanswer := 0;
end;
end;

Zusätzliche Anmerkung: Dies ist nur eine Kurzfassung des eigentlichen Problems, es finden viel mehr Überprüfungen statt. hab ein Notizzettel-Programm, wo ich dann beim Node-wechsel die Änderungen speichere, wobei die Betreffes halt im Treeview angezeigt werden.

alcaeus 22. Mär 2005 09:18

Re: Treeview_Change "rückgängig" machen, Selected-
 
So:

Delphi-Quellcode:
var
  ChangeEvent: TNotifyEvent;
begin
  ChangeEvent := TreeView1.OnChange;
  TreeView1.OnChange := nil;
  //..
  TreeView1.OnChange := ChangeEvent;
end;
Greetz
alcaeus

Christian123 22. Mär 2005 09:37

Re: Treeview_Change "rückgängig" machen, Selected-
 
So weit so gut, Aber leider klappt da irgendwas nicht so richtig.

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
var nodenumber : integer;
var nodename : String;
var ChangeEvent: TNotifyEvent;
begin
ChangeEvent := TreeView1.OnChange; <--Fehler beim Kompilieren. Liste der parameter ist unterschiedlich

TreeView1.OnChange := nil;

Was fehlt?

alcaeus 22. Mär 2005 09:40

Re: Treeview_Change "rückgängig" machen, Selected-
 
Tja...hättest du dir die Hilfe zum TreeView angesehn, hättest du bemerkt dass das OnChange-Ereignis vom Typ "TTvChangedEvent" ist. Das mit TNotifyEvent war ein Schuss ins Blaue, und ein bisschen Selbsteinsatz wird man auch erwarten dürfen, oder nicht? :zwinker:

Greetz
alcaeus

Christian123 22. Mär 2005 09:55

Re: Treeview_Change "rückgängig" machen, Selected-
 
Eigentlich reg ich mich ja auf über die Arroganz, Herr Platinum-Member...
Ich unterstell mir mal ein bischen Selbsteinsatz..
Aber trotzdem Danke..;)

alcaeus 22. Mär 2005 10:02

Re: Treeview_Change "rückgängig" machen, Selected-
 
Zitat:

Zitat von Christian123
Eigentlich reg ich mich ja auf über die Arroganz, Herr Platinum-Member...

Das war nicht Arroganz, du hast mich falsch verstanden. Ich musste nämlich genau dasselbe tun: die OH öffnen, denn ich wusste im Moment auch nicht genau welchen Typ das Ereignis hat. Deshalb mein Tipp mit der OH :zwinker:

Aber an die Anrede "Herr Platinum-Member" könnte ich mich gewöhnen :mrgreen:

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 Uhr.

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