Treevieweintrag nicht löschen
Hallo!!
Ich habe ein eigenartiges Problem, wenn ich in einem Treeview einen Eintrag markierte und anschließend lösche funktioniert das ohne Probleme. Mein Problem ist es, dass ich kann ohne zu markieren Einträge löschen kann, wie kann ich das verhindern? MfG Master |
Re: Treevieweintrag nicht löschen
:gruebel:
Ohne zu markieren loeschen? Du koenntest im OnMouseUp der TreeView ueberpruefen, ob ein Node an der entsprechenden Stelle ist:
Delphi-Quellcode:
In diesem Fall zeig einfach kein Popupmenu an. So wie ich das mitgekriegt habe, loescht die TreeView beim Klick auf einen leeren Bereich nicht die aktuelle Markierung.
if TreeView1.GetNodeAt(X, Y) = nil then
Greetz alcaeus |
Re: Treevieweintrag nicht löschen
Hallo!!
nein, wenn kein Eintrag markiert ist löscht er willkürlich einen, ohne eine Auswahl zu treffen. z.B klicke ich in ein Memo und anschließend wieder auf den löschen Button, es ist zwar nichts markiert, aber er löscht trotzdem einen Eintrag Master |
Re: Treevieweintrag nicht löschen
Zitat:
Finde aber mal raus, ob meine Vermutung mit dem zuletzt markierten Knoten stimmt. Und zur Not koenntest du immer noch eine Sicherheitsabfrage einbauen... Greetz alcaeus |
Re: Treevieweintrag nicht löschen
Hallo!!
ja du hast recht, es wir der nächste übergeordnete Knoten gelöscht. Ich habe schon versucht zu prüfen ob ein Eintrag ausgewählt ist mit der Eigenschaft Selected, aber das wird in der If Abfrage nicht akzeptiert. Ja das mit der Abfrage könnte ich machen, aber es das ist nicht die beste Lösung. :coder2: :?: MfG Master |
Re: Treevieweintrag nicht löschen
Hallo,
Zitat:
Zitat:
Delphi-Quellcode:
Wenn ich es richtig verstanden habe, dann soll erst dann ein Knoten gelöscht werden können, wenn der Anwender selectiert hat.
if TreeView1.Selected <> nil then
showmessage('Ein Eintrag ist im TreeView selectiert'); So geht es:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin if TreeView1.Selected <> nil then begin TreeView1.Items.Delete(TreeView1.Selected); Button1.Enabled := False; end; end; procedure TForm1.TreeView1Enter(Sender: TObject); begin if TreeView1.Items.Count > 0 then//Zugriffsfehler vermeiden Button1.Enabled := True; end; procedure TForm1.TreeView1Exit(Sender: TObject); begin Button1.Enabled := False; end; |
Re: Treevieweintrag nicht löschen
Hi.
@lannes: OnExit wird doch aufgerufen, sobald ein anderes Control den Fokus erhält. Und das ist der Fall, wenn man auf den Button klickt, also wird in dem Moment in dem du klickst der Button deaktiviert :arrow: nix passiert ;-) |
Re: Treevieweintrag nicht löschen
Hallo,
Zitat:
Der Schalter wird zwar zuerst deaktiviert, danach wird aber OnClick aufgerufen. :thumb: |
Re: Treevieweintrag nicht löschen
Zitat:
Zitat:
Greetz alcaeus |
Re: Treevieweintrag nicht löschen
Hallo!!
Leider ist das ekine Lösung des Problems. Also schein das ganze ein Fehler im Delphi zu sein?! ICh hoffe es kenne jemand eine Lösung, denn ich habe keine Ahnung wie ich das Problem lösen soll. MfG Master |
Re: Treevieweintrag nicht löschen
Da ist kein Fehler in Delphi!
Der Fehler liegt eher in der Art, wie du löschst. Poste ein Minimalprogramm (Form mit TreeView) mit dem dein Problem nachvollzogen werden kann und es wird dir sicher geholfen werden. |
Re: Treevieweintrag nicht löschen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!!
Ich habe das Projekt hochgeladen, mal sehen ob sich jetzt eine Lösung findet. Master |
Re: Treevieweintrag nicht löschen
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe deinen Code ein wenig verbeult. Schau mal hin. Spiel damit rum. Sind nicht viele Zeilen. Vielleicht merkst du dann schon was du ändern kannst bzw. musst.
Grüße vom marabu |
Re: Treevieweintrag nicht löschen
Hallo,
Zitat:
hab da in TreeView1Exit was vergessen, jetzt aber richtig:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin if TreeView1.Selected <> nil then begin TreeView1.Items.Delete(TreeView1.Selected); Button1.Enabled := False; end; end; procedure TForm1.TreeView1Enter(Sender: TObject); begin if TreeView1.Items.Count > 0 then//Zugriffsfehler vermeiden Button1.Enabled := True; end; procedure TForm1.TreeView1Exit(Sender: TObject); begin if activeControl <> Button1 then//<<<<<----Neu -------sonst wird onClick von Button1 nicht ausgeführt Button1.Enabled := False; end; |
Re: Treevieweintrag nicht löschen
Hallo!!
danke nochmal, werde es morgen nochmal versuchen. Ich sage bescheid ob es richtig funktioniert hat. Master |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:09 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