AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Treevieweintrag nicht löschen

Ein Thema von Masterof · begonnen am 19. Apr 2005 · letzter Beitrag vom 20. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
Masterof

Registriert seit: 12. Feb 2004
Ort: Bad Elster
142 Beiträge
 
Delphi 7 Enterprise
 
#1

Treevieweintrag nicht löschen

  Alt 19. Apr 2005, 22:55
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
.: Meine Homepage :.
http://www.micha-hertel.de
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Treevieweintrag nicht löschen

  Alt 19. Apr 2005, 22:58


Ohne zu markieren loeschen?
Du koenntest im OnMouseUp der TreeView ueberpruefen, ob ein Node an der entsprechenden Stelle ist:
if TreeView1.GetNodeAt(X, Y) = nil then 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.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Masterof

Registriert seit: 12. Feb 2004
Ort: Bad Elster
142 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Treevieweintrag nicht löschen

  Alt 19. Apr 2005, 23:02
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
.: Meine Homepage :.
http://www.micha-hertel.de
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: Treevieweintrag nicht löschen

  Alt 19. Apr 2005, 23:05
Zitat von Masterof:
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
Doch, es ist einer markiert: den den du als letztes markiert hattest. Da das TreeView aber nicht den Focus hat, sieht man es nicht. Ich weiss im Moment nicht wie man das Verhalten umgehn koennte, die ActiveComponent-property des Forms auszulesen bringt auch nichts, denn sobald man auf den Button klickt, ist der Button die aktive Kompo
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
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Masterof

Registriert seit: 12. Feb 2004
Ort: Bad Elster
142 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Treevieweintrag nicht löschen

  Alt 19. Apr 2005, 23:10
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.
MfG Master
.: Meine Homepage :.
http://www.micha-hertel.de
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#6

Re: Treevieweintrag nicht löschen

  Alt 20. Apr 2005, 10:10
Hallo,

Zitat von Masterof:
... 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 ...
Damit man sehen kann welcher Knoten markiert ist, auch wenn TreeView nicht den Focus hat, muss die Eigenschaft HideSelection der TreeView im OI auf False gesetzt werden.

Zitat von Masterof:
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.
MfG Master
Die Eigenschaft Selected kannst Du so abfragen:
Delphi-Quellcode:
if TreeView1.Selected <> nil then
  showmessage('Ein Eintrag ist im TreeView selectiert');
Wenn ich es richtig verstanden habe, dann soll erst dann ein Knoten gelöscht werden können, wenn der Anwender selectiert hat.
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;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Waldteufel
(Gast)

n/a Beiträge
 
#7

Re: Treevieweintrag nicht löschen

  Alt 20. Apr 2005, 10:13
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 nix passiert
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#8

Re: Treevieweintrag nicht löschen

  Alt 20. Apr 2005, 10:29
Hallo,
Zitat von Waldteufel:
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 nix passiert
Hast Du das getestet , glaub ich Dir nicht
Der Schalter wird zwar zuerst deaktiviert, danach wird aber OnClick aufgerufen.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#9

Re: Treevieweintrag nicht löschen

  Alt 20. Apr 2005, 10:30
Zitat von Lannes:
Die Eigenschaft Selected kannst Du so abfragen:
Delphi-Quellcode:
if TreeView1.Selected <> nil then
  showmessage('Ein Eintrag ist im TreeView selectiert');
*ggg* ich habs soeben probiert, aber wie bereits gesagt, nichtmal ein Klick in einen leeren Bereich der Treeview loescht die Markierung. Wie es ist, nil zuzuweisen habe ich jetzt nicht versucht, aber dann wuerde sich ja auch die Frage stellen, wann man selected auf nil setzen soll

Zitat von Waldteufel:
@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 nix passiert
hmm...dann kann man eben nur einmal einen Knoten loeschen, aber ich sehe keinen Hinweis auf OnExit

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Masterof

Registriert seit: 12. Feb 2004
Ort: Bad Elster
142 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Treevieweintrag nicht löschen

  Alt 20. Apr 2005, 13:06
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
.: Meine Homepage :.
http://www.micha-hertel.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:49 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