Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - TreeView und RadioGroup selected
JaBS - Fr 17.08.07 08:35
Titel: TreeView und RadioGroup selected
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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - Fr 17.08.07 09:47
o.O Freude pur!
Danke dir :D
SteheAufDerLeitung - Fr 17.08.07 09:49
Freut mich! jetzt konnt ich als anfänger selbst mal jemandem helfen ;-D
JaBS - 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)
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 if frm_main.e_caption.Text <> '' then begin if frm_main.rg_menu.ItemIndex = -1 then MessageDlg('Sie müssen dazu das zugehörige Hauptmenü auswählen!', mtInformation, [mbOK], 0) else begin if frm_main.rg_submenu.Items.Count < 9 then begin frm_main.rg_submenu.Items.Add(frm_main.e_caption.Text); 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
raziel: Code- durch Delphi-Tags ersetzt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!