Autor Beitrag
hui1991
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 433

Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
BeitragVerfasst: Mo 07.05.07 22:41 
Hallo,

ich suche gerade für mein neues Projekt ein CheckboxTreeView, also man macht sowas wie ein TreeView blos mit CHeckbox zusammen, damit man auch ganze Bäume geselektieren kann. Ich hoffe da kennte jemand eine Komponente dafür.
user defined image

Natürlich freeware ^^
In google keine Freeware gefunden und sonst hier auch nichts gefunden, vllt. war ich einfach nur blind. ^^

MfG
hui1991
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: Mo 07.05.07 23:11 
Hallo,

ich kenn da eine Freeware :zwinker:, die Standard-TreeView-Komponete.

Man erstellt zwei Images, gecheckt und nicht gecheckt, diese packt man in eine ImageList, die der Eigenschaft TreeView.StateImages zugewiesen wird.

Durch setzen von StateIndex werden die entsprechenden Images angezeigt.
Im Ereignis OnMouseDown schaltet man dann zwischen den Images um, wenn auf das StateImage geklickt wird.

Überprüfen ob auf das StateImage geklickt wurde und umschalten:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var MyNode : TTreeNode;
begin
  if (htOnStateIcon in TreeView1.GetHitTestInfoAt(x,y)) then
    begin
    MyNode := TreeView1.GetNodeAt(x,y);
    TreeView1.Items.BeginUpdate;
    if MyNode.StateIndex = 2 then
      MyNode.StateIndex := 3
      else
        MyNode.StateIndex := 2;
    end;

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

Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
BeitragVerfasst: Di 08.05.07 14:39 
Danke für deine Antwort,

aber gibt es auch schon eine fertige komponente? (Freeware)
Will ja das Rad nicht neu erfinden ^^
Ne, also das ist schon ein Aufwand, wenn man jetzt ein Haupt Baum hat und diesen Abwählt, müssen alle unteren auch abgewählt werden. Wenn jetzt im Baum drinnen einer Abgewählt wird, dann müssen sich die übergeordneten ändern.
Würde gerne auf etwas neues zugreifen.
Ich weis, das Faulheit nicht gern gesehen ist, aber naja ich hab auch nicht gerade viel Zeit, deswegen würde ich lieber eine Fertige komponente haben, die diese Funktion schon drin hat.

MfG
hui1991
Coder
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Di 08.05.07 15:35 
VirtualTreeView hat Checkboxes.
Ich glaub aber deine Spezialfunktion musst du per ChildNodes selber Programmieren.

MfG
hui1991 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 433

Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
BeitragVerfasst: Di 08.05.07 15:50 
Hm.. ich glaub da gab es mal eins das genau das was ich braucht.
Das hatte denke ich auch automatisch die Ordner von Arbeitsplatz usw. auch aufgelistet.
Blos wie hieß das.
Hm..
Da ist es auch drauf:
user defined image
Das links die liste da, das TreeView, sowas brauch ich ^^

MfG
hui1991
hui1991 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 433

Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
BeitragVerfasst: Do 10.05.07 07:00 
Guten Morgen,

also ich habe hier mich doch dran gesetzt und die Situation überschätzt.
Naja Wenn ich etz oben drauf klicke dann werden alle Untergeordneten ab und angewählt.
Blos wenn ich weiter unten eins anschalte bekommen die Oberen kein Quadrat drin, als zeichen, das da drin was angewählt ist.
Ich habe unten eine Grafik gemacht wo der Rote Punkt der Klick mit der Maus bedeutet.
Wenn das Passiert sollte das dann so ausehen wie es da gezeigt wird.
ICh hoffe mir kann jemand erklären wie ich das am Klügsten mache, am besten am Unkomplizierten.
Am besten wäre es, wenn man das in ein Timer stecken kann und es dort laufen lässt.
Es soll der ganze Baum aktualisiert werden.

Hoffe das mir da jemand helfen kann.

MfG
hui1991
Einloggen, um Attachments anzusehen!
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: Do 10.05.07 09:45 
Hallo,

warum einen Timer und den ganzen Baum aktualisieren :gruebel: , man muss doch nur die Eltern-Nodes(Parent) aktualisieren.

Such Dir eine Variante aus:

1. while-Schleife
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var aNode : TTreeNode;
begin
  aNode := TreeView.GetNodeAt(x,y);
  while Assigned(aNode.Parent) do
    begin
    aNode := aNode.Parent;
    //hier StateIndex setzen
    end;
end;

2. for-Schleife
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var aNode : TTreeNode;
    z : Integer;
begin
  aNode := TreeView.GetNodeAt(x,y);
  for z := aNode.Level downto 1 do
    begin
    aNode := aNode.Parent;
    //hier StateIndex setzen
    end;{}
end;


3. rekursiv
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure SetStateIcon(aNode: TTreenode);
begin
  //hier StateIndex setzen
  if Assigned(aNode.Parent) then
    SetStateIcon(aNode.Parent);//rekursiv
end;

//...
var aNode : TTreeNode;
begin
  aNode := TreeView.GetNodeAt(x,y);
  if Assigned(aNode.Parent) then
    SetStateIcon(aNode.Parent);
end;

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

Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
BeitragVerfasst: Do 10.05.07 12:16 
hi,

lol, es gibt parent naja denken sollte man tun :idea:
Ja bin grad in school

MfG
hui1991