2012-03-26 9 views
0

Ich versuche, IsChecked und IsSelected in Verbindung mit dem FMX TListbox-Steuerelement zu verwenden, und beide geben falsche Ergebnisse zurück (immer True, unabhängig von der Benutzerauswahl). Ist das ein bekannter Fehler und gibt es einen Workaround?IsChecked-Eigenschaft in Firemonkey TListbox gibt das korrekte Ergebnis nicht zurück?

Mein Test-Code ist ziemlich einfach:


var 
    i: integer; 
    lb: TListboxitem; 

for i:=0 to lbxPartners.items.Count-1 do 
begin 

    lb :=tlistboxitem(lbxPartners.Items[i]); 
    if lb=nil then continue; 

    if lb.IsChecked then 
    memo1.Lines.Add('item '+inttostr(i) +' checked') 
    else 
    memo1.Lines.Add('item '+inttostr(i)+' unchecked'); 
end; 
+0

Es sollte lbxPartners.ListItems [i] sein. –

+0

Mike, danke dafür - es funktioniert jetzt, obwohl ich festgestellt habe, dass, wenn ich den Text des Artikels erhalten möchte, ich noch zur .items-Stringliste gehen muss; listitems [n] .text gibt einen Fehler aus. Naja, zumindest habe ich es jetzt funktioniert! – user1248816

+0

Ich habe eine vollständige Antwort für Sie geschrieben. ListItems [n] .Text funktioniert gut für mich. Welchen Fehler bekommst du? Haben Sie ein Codebeispiel? –

Antwort

4

TListBox.Items eine Liste von Strings ist, und ist vor allem dort, so dass Sie die Kontrolle in der gleichen Weise wie die VCL TListBox verwenden können.

TListBox.ListItems ist eine Liste von TListBoxItems, die die untergeordneten Steuerelemente sind, die von der TListBox angezeigt werden.

Um die IsChecked Eigenschaft zugreifen:

ListBox1.ListItems[n].IsChecked := True; 

Sie den Text zugreifen kann entweder mit:

ListBox1.Items[n] := 'Hello'; 
ListBox1.ListItems[n].Text := 'World'; 

Ihrem vollständigen Code wäre (für eine Besetzung keine Notwendigkeit Hinweis):

var i: integer; lb: TListboxitem; 

for i:=0 to lbxPartners.items.Count-1 do begin 
    lb := lbxPartners.ListItems[i]; 
    if lb=nil then continue; 

    if lb.IsChecked then 
    memo1.Lines.Add('item '+inttostr(i) +' checked') 
    else 
    memo1.Lines.Add('item '+inttostr(i)+' unchecked'); 
end; 
+1

Sollte nicht ListBox1.Items [n] .IsChecked: = True; sei ListBox1.ListItems [n] .IsChecked: = True; ? – HeartWare

+0

Ja, tut mir leid. Antwort bearbeitet. –