Autor Beitrag
JaBS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Fr 17.08.07 08:35 
Guten morgen.

Mein Programm verwendet eine TTreeView sowie eine RadioGroup.
Ich erzeuge ein Item in der RadioGroup, welches dann auch als Parent
im TreeView angelegt wird. Die Caption des erzeugten Radiobuttons
und dem TreeView-Parent sind die gleichen.

Jetzt möchte ich wenn ich einen Radiobutton anklicke, das zugehörige Node
dazu im TreeView finden. Nach vielem Probieren und Lesen weiss ich nur
immer noch nicht wie ich das richtig anstelle, also danke ich euch
schonmal für eure Hilfe,
euer Jabs
SteheAufDerLeitung
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 104



BeitragVerfasst: Fr 17.08.07 08:37 
In der Treeview gibt es die Möglichkeit Roots abzufragen. Glaub das war direkt mit TreeView.Roots.Count und TreeView.Roots[x] zu machen. Frag doch die Caption der Radiogroup und TreeView.Roots[x].Text ab!?
JaBS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Fr 17.08.07 09:16 
Häng da immer noch an ein paar Problemen, die,
wenn ich sie zu beheben wüsste, das ganze erheblich
einfacher gestalten würde.

- TreeView.Roots.Count gibt es nicht
Dafür haste mich auf die Idee gebracht
einfach die einzelnen Lvl 0 - Parents nach ihrer Caption abfragen, dann hab ich
das Node und kann da mein Child erzeugen. (Soweit zur Theorie, ma schaun ob ich das hinkrieg^^)

- Frag doch die Caption der Radiogroup und TreeView.Roots[x].Text ab!?
Wenn ich die Caption der RadioGroup abfrage, bekomme ich wenn ich mich recht erinnere
nen Array mit allen Radiobutton-Captions in dieser RadioGroup.
Ich möchte allerdings nur die Caption des ausgewählten/aktiven Radiobuttons.
Ich komme an diesen String allerdings nicht ohne den ItemIndex und
ich habe keine Ahnung wie ich an diesen kommen soll....
Wünschte ich hätte einfach RadioGroup.Items.Selected oder sowas
zur Verfügung :(
JaBS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Fr 17.08.07 09:17 
Häng da immer noch an ein paar Problemen, die,
wenn ich sie zu beheben wüsste, das ganze erheblich
einfacher gestalten würde.

- TreeView.Roots.Count gibt es nicht
Dafür haste mich auf die Idee gebracht
einfach die einzelnen Lvl 0 - Parents nach ihrer Caption abfragen, dann hab ich
das Node und kann da mein Child erzeugen. (Soweit zur Theorie, ma schaun ob ich das hinkrieg^^)

- Frag doch die Caption der Radiogroup und TreeView.Roots[x].Text ab!?
Wenn ich die Caption der RadioGroup abfrage, bekomme ich wenn ich mich recht erinnere
nen Array mit allen Radiobutton-Captions in dieser RadioGroup.
Ich möchte allerdings nur die Caption des ausgewählten/aktiven Radiobuttons.
Ich komme an diesen String allerdings nicht ohne den ItemIndex und
ich habe keine Ahnung wie ich an diesen kommen soll....
Wünschte ich hätte einfach RadioGroup.Items.Selected oder sowas
zur Verfügung :(
JaBS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Fr 17.08.07 09:19 
oO sorry für den Doppelpost, hatte nur neu geladen, wegen ined probs.
Nen Spamfilter hätte ich in diesem Forum schon erwartet xD
(Wäre vllt auch keine gute Idee, hier scheint man ja innerhalb von Sekunden
eine Antwort zu bekommen, o.O nice, danke :)) )
SteheAufDerLeitung
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 104



BeitragVerfasst: Fr 17.08.07 09:23 
stimmt.. root gibts nicht. aber das lvl-0 klingt gut. Wie kommt man denn da dran? Klingt interessant, kenn ich selbst nicht..

und es gibt sicher ne möglichkeit mit den selected-items - bzw components:

schreib ne schleife, die jede komponente der radiogroup abfragt, ob sie selected ist. in einer radiogroup darfs ja immer bloß ein selected-item geben, daher ein break einbauen..

hilfts dir auf die sprünge?

grüße
JaBS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Fr 17.08.07 09:33 
Nee weniger, aber da kann ich mich auch ma revangieren^^

An das Level des Items kommst du mit
TTreeview.Items.Item.Level //(property Level: Integer)

Das gibt dir an, in welcher Baum-Ebene der Knoten liegt.
Die Knoten "ganz links" haben Level 0, deren Child-Knoten Level 1, usw.

Btt:
Das Problem ist ja, das ich anscheinend keinen Selected-Wert in die
Finger kriegen kann, sonst wäre die Abfrage ja easy :D
SteheAufDerLeitung
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 104



BeitragVerfasst: Fr 17.08.07 09:40 
Die Hilfe sagt: Der Wert der Eigenschaft ItemIndex bestimmt, welches Optionsfeld derzeit ausgewählt ist! =)

und jetzt: Freude! ;-)
JaBS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Fr 17.08.07 09:47 
o.O Freude pur!
Danke dir :D
SteheAufDerLeitung
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 104



BeitragVerfasst: Fr 17.08.07 09:49 
Freut mich! jetzt konnt ich als anfänger selbst mal jemandem helfen ;-D
JaBS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Fr 17.08.07 10:28 
So, funzt wunderbar. Dann poste ich unsere Lösung mal für
die, die ganuso wenig Plan haben wie ich :D

Und diejenigen die da sowieso voll durchsteigen:
BITTE kritisiert was das Zeug hält, schliesslich
möchte ich den Stil kaum beibehalten, wenn
ich noch was verbessern kann (Syntax, Symantik, oder whatever else)


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:
procedure Tstructure.addSubmenu;
var
  menuCap : String;
  nodeCount, I : Integer;
begin
  //Nur ausführen wenn das Submenü auch einen Namen bekommt
  if frm_main.e_caption.Text <> '' then begin
    //Wurde ein Hauptmenü ausgewählt?
    if frm_main.rg_menu.ItemIndex = -1 then
      MessageDlg('Sie müssen dazu das zugehörige Hauptmenü auswählen!',
                  mtInformation, [mbOK], 0)
    else begin
      //Wurden schon 9 Submenüs angelegt?
      if frm_main.rg_submenu.Items.Count < 9 then begin
        //Submenü in der RadioGroup anlegen
        frm_main.rg_submenu.Items.Add(frm_main.e_caption.Text);
        //TreeView Child anlegen
        //Gehört zu welchem Parent?
        menuCap := frm_main.rg_menu.Items.Strings[frm_main.rg_menu.ItemIndex];
        nodeCount := frm_main.tv_cmdmenu.Items.Count;
        for I := 0 to nodeCount - 1 do begin
          if frm_main.tv_cmdmenu.Items.Item[I].Text = menuCap then
            with frm_main.tv_cmdmenu do begin
              Items.AddChild(Items.Item[I], frm_main.e_caption.Text);
            end;
        end;
      end
      else
        MessageDlg('CS erlaubt maximal 9 Untermenüs!', mtError, [mbOk], 0);
    end;
  end
  else
    MessageDlg('Das Menü ohne Namen....o.O ich krieg Angst!', mtError, [mbOk], 0);
end;


Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt