Autor Beitrag
rolandt4088
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

WINDOWS XP
Delphi 7, CodeGear RAD Studio
BeitragVerfasst: Di 26.06.07 20:35 
Hallo,

ich möchte aus dem Treeview Knotenpunkte entfernen.
Aufgabe:
Wenn der Knoten auf Level 0 entfernt werden soll, darf kein Unterknoten vorhanden sein.
Das gleiche gilt für Level 2.

Dazu habe ich folgenden Code geschrrieben:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
[code:1:4f2d190a59]
procedure Tf_kategorien_artikel.Kategorieentfernen1Click(Sender: TObject);
begin
 if Treeview1.Selected.Level = 0 then
  begin
   If TreeView1.Parent = nil then
    begin
     //Eintrag aus Tabelle h_kat entfernen
{     Query1.Close;
     Query1.SQL.Clear;
     Query1.SQL.Add('delete * from h_category where h_cat_id = :h_cat_id');
     Query1.Parameters.ParamByName('h_cat_id').Value := strtoint(l_h_cat_id.Caption');
     Query1.ExecSQL;}

     Treeview1.Selected.Delete;
{     l_h_cat_id.Caption := '';
     l_h_cat.Caption := '';}

    end
   else
    Showmessage('Unterkategorien vorhanden');
  end
 else
  begin
   if Treeview1.Selected.Level = 1 then
    begin
     If TreeView1.Selected.Parent = nil then
      begin
       //Eintrag aus Tabelle u_kat1 entfernen
{      Query1.Close;
       Query1.SQL.Clear;
       Query1.SQL.Add('delete * from u_category_1 where u_cat_id_1 = :u_cat_id_1');
       Query1.Parameters.ParamByName('u_cat_id_1').Value := strtoint(l_u_cat_id_1.Caption');
       Query1.ExecSQL;}

       Treeview1.Selected.Delete;
{      l_h_cat_id.Caption := '';
       l_h_cat.Caption := '';}

      end
     else
      Showmessage('Unterkategorien vorhanden');
    end;
  end;
[/code:1:4f2d190a59]


Die Abfrage funktioniert aber nicht auf den Unterknoten. (TreeView1.Selected.Parent = nil)

Wer hat einen Tipp wie ich den Unterknoten abfragen kann ob weitere Unterknoten auf Level 2 vorhanden sind?

Gruß
Roland
Blawen
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 616
Erhaltene Danke: 33

Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
BeitragVerfasst: Di 26.06.07 21:40 
Entweder gehst Du rekursiv vor, oder viel einfacher: Lass den Benutzer zuerst alle Unterknoten selber löschen...
Dass ein Hauptknoten gelöscht wird, dürfte sowieso eher selten vorkommen.

Die Einträge der Knotenpunkt würde ich übrigens nicht effektiv löschen, sondern ich würde noch mindestens ein zusätzliches Kontroll-Feld einführen: "geloescht" (oder sinngemäss)

Was Du unbedingt im Auge behalten musst, ist die Zuweisung der Einträge, die auf die Liste Bezug nehmen (Bücher?), ansonsten sind diese nirgends mehr zugehörig.

_________________
Es kompilert, wir können ausliefern.
Und es kompiliert wieder - das Update ist fertig - bitte 100 Euro ;-)
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Di 26.06.07 23:10 
Hallo,

Parent = Eltern
user profile iconrolandt4088 hat folgendes geschrieben:
Dazu habe ich folgenden Code geschrrieben:
ausblenden Delphi-Quelltext
1:
   If TreeView1.Parent = nil then					

wenn das TreeView nicht der Form oder einer anderen Komponete zugeordnet ist, dann :gruebel:

pack das mal in eine ButtonClick-Prozedur:
ausblenden Delphi-Quelltext
1:
showmessage(TreeView1.Parent.Name);					


Bezgl. der Unterkonten sollte Dir TreeView.Selected.Counthelfen, oder auch HasChildren.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
rolandt4088 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

WINDOWS XP
Delphi 7, CodeGear RAD Studio
BeitragVerfasst: Mi 27.06.07 18:28 
Hallo,
ich habe das Problem mit "hasChildren" gelöst.
Vielen Dank für die Tipps.

Gruße
Roland