Autor Beitrag
Robert
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: Di 17.09.02 18:42 
Hi!
Ich habn Problem. Könnte mir jemand saen, wie man ein Item einer TreeView auswählt?
Sagen wir mal, ich wollte das zweite Item der gesamten Baumstrucktur auswählen. Das wäre dann ja das erste Item im ersten Zweig der Treeview.
Aber welchen Quellecode muss ich dafür eingeben?

Vielen Dank im Vorraus

_________________
MfG
Robert
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Di 17.09.02 18:49 
Hi
wenn du definitiv weisst, dass es sich um das zweite Item handelt, kannst du einfach über den Index der Items darauf zugreifen.
ausblenden Quelltext
1:
  Treeview1.Items[1].Selected := True;					


Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Robert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: Di 17.09.02 19:12 
Danke!
Jedoch wenn ich mit folgendem versuche, die ersten beiden Zeichen des Textes der TreeView in Icons umzuwandel, dann werden nur die Items der ersten Ebene "beICONt":
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
    Markiert_beim_laden: string;
    Image_number: integer;
begin
    for i:=0 to TreeView1.Selected.Count+0 do begin
      Markiert_beim_laden := TreeView1.Selected.Text;
      Image_number := strtoint(Copy(TreeView1.Selected.Text, 1, 2));
      TreeView1.Selected.ImageIndex    := Image_number;
      TreeView1.Selected.SelectedIndex := Image_number;
      Delete(Markiert_beim_laden, 1, 2);
      TreeView1.Selected.Text := Markiert_beim_laden;
      Treeview1.Items[TreeView1.Selected.Count + 1].Selected := True;
    end;
end;

_________________
MfG
Robert
aogwaba
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109



BeitragVerfasst: Di 17.09.02 23:01 
Hi!
ausblenden Quelltext
1:
for i:=0 to TreeView1.Selected.Count+0 do begin					


Liefert die Root-Knoten. Wenn du alle Knoten ansprechen willst, musst
du dich rekursiv durch die Baumstruktur hangeln.

Wieso eigentlich +0?

cu
waba
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 18.09.02 08:11 
ausblenden Quelltext
1:
for i:=0 to TreeView1.Selected.Count+0 do begin					

Das berücksichtigt die Root-Knoten wohl nur, wenn "Selected" der Super-Root ist. Wenn du gar nichts gewählt hast, und "Selected" demzufolge nil ist, rumpelt´s schon mal.
ausblenden Quelltext
1:
2:
3:
4:
for i := 0 to TreeView1.Items.Count - 1 do
  if(TreeView1.Items.Item[i].Level = 0) then // <--
    begin
    end;

bringt tatsächlich alle Root-Knoten des TreeView.

Warum in der Funktion von Robert da ein +Null steht, ist mir allerdings auch ein Rätsel.:?:
Robert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: Mi 18.09.02 14:42 
Hi!
Das hat leider nur die Wirkung des ersten Codes auch.
Was ich will isz folgendes:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
if ("selected Node" <> "letzter Node der TreeView") and (modus = 'laden') then begin
...mach irgendwas...;
Wähle nächsten Node aus;
end else begin
...mach irgendwas...;
modus = 'fertig'; //hauptsache nicht 'laden, dann würde 'if ...' wieder von vorne losgehen
Wähle ersten Node überhaupt aus;
Das geht mit dem anderen Code leider nicht. Der andere wählt nur die ersten beiden Übergeordneten Nodes aus.
Kann mir jemand helfen?

_________________
MfG
Robert
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 18.09.02 18:57 
Hi Robert.

Darf ich ehrlich sein? So ganz habe ich immer noch nicht kapiert, was du eigentlich machen willst. Aber wir können ja versuchen, das anhand eines Beispiels zu klären. Also, mein TreeView ("tv1" genannt, weil ich zu lange Kompo-Namen im Code hasse :wink:) sieht so aus:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
[ ] Erster Eintrag
[-] Zweiter Eintrag
    [ ] Ein Unterknoten in Punkt 2
[-] Dritter Eintrag
    [-] Ein Unterknoten in Punkt 3
         [ ] Ein Unterunterknoten

Bis hier kein Problem. Folgende Funktion "Button1.OnClick" zeigt dir alle Knoten, die sich im Hauptverzeichnis des Baums befinden:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : integer;
begin
  with tv1,Items do
    for i := 0 to Count - 1 do
      if(Item[i].Level = 0) then    // <-- mal auskommentieren!
        ShowMessage(Item[i].Text);
end;

Kommentier nach dem Test einfach mal die von mir markierte Zeile aus, und probier´s erneut. Es ist also so, dass du ohne die Level-Prüfung durch den kompletten Baum gehst.

Die nächste Prozedur (Button2.OnClick) zeigt dir den allerersten und den allerletzten Knotennamen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button2Click(Sender: TObject);
begin
  with tv1 do
    begin
      ShowMessage(Items[0].Text);
      ShowMessage(Items[Items.Count-1].Text);
    end;
end;

Und wenn du mal die Einträge aus meinem TreeView bei dir benutzt, dann wirst du sehen, dass der allerletzte Eintrag nicht zwangsläufig im Hauptverzeichnis sein muss.

Und zu guter Letzt, diese Funktion hier:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TForm1.Button3Click(Sender: TObject);
var
  i : integer;
begin
  with tv1,Items do
    begin
      // zuerst mal der Reihe nach auswählen
      for i := 0 to Count - 1 do
        begin
          Selected := Item[i];
          SetFocus;   // <-- damit man´s auch sieht!
                      // oder "HideSelection" im Objektinspektor auf
                      // FALSE setzen!!

          sleep(150); // <-- damit´s nicht zu schnell geht
        end;

      // jetzt den allerersten Knoten auswählen
      Selected := Item[0];
    end;
end;

wählt sich der Reihe nach durch den Baum und springt am Schluss wieder auf den allerersten Knoten zurück.

So, ich hoffe, das hilft dir weiter.

Gruß,
Mathias.
Robert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: Mi 18.09.02 19:35 
ja, danke, hat mir weiter geholfen. Die letzte Funktion.
Wenn du das Programm 'MagazinCollector 1.0' haben willst: ICh werde es auf AUQ.de posten und, wenn du willst, schick ich dir eine Mail mit dem Code und der eigentlichen Install-datei.
Musst du mir halt sagen.

_________________
MfG
Robert