TreeView mit Multiselect

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
jscnetcore
Beiträge: 19
Registriert: Mi 31. Jul 2013, 11:34
OS, Lazarus, FPC: Debian Squeeze Linux (L 1.0.8 FPC 2.6.2)
CPU-Target: 32Bit

TreeView mit Multiselect

Beitrag von jscnetcore »

Merkwürdiges Verhalten in einem TreeView mit Multiselect.
Ich habe in einem Formular ein TreeView platziert, Multiselect auf true gesetzt und mit diversen Einträgen gefüllt.
Um das ganze zu testen habe ich einen Button mit folgendem Code erstellt.

Code: Alles auswählen

 
procedure TForm1.Button1Click(Sender: TObject);
var I : Integer;
begin
  For I := 0 to TreeView1.Items.Count-1 do showmessage(BoolToStr(TreeView1.Items.Item[I].Selected));
end;
 
Normalerweise, d.h. unter Kylix, bekomme ich bei jedem selektierten Element ein (-1) geliefert.
In Lazarus wird mir nur das erste ausgwählte Element mit (-1) angezeigt, alle anderen sind auf (0) also als FALSE deklariert obwohl alle ausgewählten Elemente farblich unterlegt sind.
Ich möchte in einem Programm die selektierten Elemente nacheinander abarbeiten, aber das haut so leider nicht hin:-(

Benutzeravatar
theo
Beiträge: 10873
Registriert: Mo 11. Sep 2006, 19:01

Re: TreeView mit Multiselect

Beitrag von theo »

Hmm, keine Ahnung. Aber wir haben ja Code Insight. Was gibt es denn da?

TreeView1.SelectionCount
TreeView1.Selections

Klingt gut.

So vielleicht? Mal testen:

Code: Alles auswählen

  For i:=0 to TreeView1.SelectionCount-1 do
  Writeln(TreeView1.Selections[i].Text);       
 
Ha! Klappt! ;-)

jscnetcore
Beiträge: 19
Registriert: Mi 31. Jul 2013, 11:34
OS, Lazarus, FPC: Debian Squeeze Linux (L 1.0.8 FPC 2.6.2)
CPU-Target: 32Bit

Re: TreeView mit Multiselect

Beitrag von jscnetcore »

Ja, das wars. Ich sollte mich wohl nicht darauf verlassen, dass haargenau der gleiche Code in Kylix und Lazarus auch das gleiche tun!
Sorry, ich dachte ich hätte schon alle Möglichkeiten aus Code Insight durchprobiert.

Vielen Dank :D

Antworten