我的TListBox
为了更好地说明它,我的意思是变空:
我正在从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
时,它会变得非常空白。
为什么会这样?如果有更好的方法来做我正在做的事情,我们将不胜感激。