| Autor |
Beitrag |
hui1991
      
Beiträge: 433
Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
|
Verfasst: 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.
Natürlich freeware ^^
In google keine Freeware gefunden und sonst hier auch nichts gefunden, vllt. war ich einfach nur blind. ^^
MfG
hui1991
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Mo 07.05.07 23:11
Hallo,
ich kenn da eine Freeware  , 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:
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 
      
Beiträge: 433
Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
|
Verfasst: 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
      
Beiträge: 1383
Erhaltene Danke: 1
WinXP
D2005 PE
|
Verfasst: Di 08.05.07 15:35
VirtualTreeView hat Checkboxes. Ich glaub aber deine Spezialfunktion musst du per ChildNodes selber Programmieren.
MfG
|
|
hui1991 
      
Beiträge: 433
Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
|
Verfasst: 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:  Das links die liste da, das TreeView, sowas brauch ich ^^ MfG hui1991
|
|
hui1991 
      
Beiträge: 433
Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
|
Verfasst: 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
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Do 10.05.07 09:45
Hallo,
warum einen Timer und den ganzen Baum aktualisieren  , man muss doch nur die Eltern-Nodes(Parent) aktualisieren.
Such Dir eine Variante aus:
1. while-Schleife
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; end; end; |
2. for-Schleife
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; end; end; |
3. rekursiv
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure SetStateIcon(aNode: TTreenode); begin if Assigned(aNode.Parent) then SetStateIcon(aNode.Parent);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 
      
Beiträge: 433
Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
|
Verfasst: Do 10.05.07 12:16
hi,
lol, es gibt parent naja denken sollte man tun
Ja bin grad in school
MfG
hui1991
|
|
|