为什么我的TListBox在检查其最后一个TListBoxItem时变空?

时间:2016-03-16 17:26:35

标签: delphi listbox firemonkey tlistbox

问题

我的TListBox 为了更好地说明它,我的意思是变空

enter image description here

上下文

我正在从TListBoxItem生成一个列表。每个项目看起来都像TJSONArray

然后,我比较event_code是否写在第二个{"event_code","event_name"}TJSONArray上。如果是,则会检查json_response_available_events

代码

ListBoxItem

分析

如果我们仅设置为procedure TFormHome.TimerGetEventsTimer(Sender: TObject); var K : Integer; Z : Integer; ListCount : Integer; AvailableList_Count: Integer; lb_item: TListBoxItem; event_code_first_array: string; event_code : string; event_name : string; begin // Disable this timer for now TimerGetEvents.Enabled := false; // Get List of Notifications json_response_events := DM_Auth0.ServerMethods1Client.GetEventsCodeAndDescription(communication_token); json_response_available_events := DM_Auth0.ServerMethods1Client.GetAllowedNotificationsList(communication_token, genset_id); ListCount := json_response_events.Count -1; AvailableList_Count := json_response_available_events.Count - 1; for K := 0 to (ListCount) do begin // Get complete Event Code and Name event_name := json_response_events.Items[K].toString; // Get Event Code event_code_first_array := StringReplace(event_name.Split([':'])[0], '"', '', [rfReplaceAll]); // Get Event Name event_name := StringReplace(event_name.Split([':'])[1], '"', '', [rfReplaceAll]); // Create ListBoxItem lb_item := TListBoxItem.Create(self); lb_item.Parent := lb_notifications; lb_item.Text := event_name; lb_item.StyleLookup := 'listboxitemleftdetail'; // Check if this Item code is available for Z := 0 to (AvailableList_Count) do begin if json_response_available_events.Items[Z] <> nil then begin // Get Event Code event_code := json_response_available_events.Items[Z].toString; // Format event_code := StringReplace(event_code, '"', '', [rfReplaceAll]); if event_code_first_array.Contains(event_code) then begin if K <= ListCount then begin lb_item.IsChecked := true; lb_item.IsSelected := false; end; end; end; end; end; end; ,则会正确显示列表,但最后一项将保持未选中状态。

<

我甚至可以在if K < ListCount then begin lb_item.IsChecked := true; lb_item.IsSelected := false; end; 喜欢

时更改它的属性
=

if K = ListCount then begin lb_item.Text := 'Deadpool for President'; end; 工作正常,但在设置lb_item.isChecked := false时,它会变得非常空白。

为什么会这样?如果有更好的方法来做我正在做的事情,我们将不胜感激。

0 个答案:

没有答案