我有一個TListBox包含大約50個TListboxItems aka項目。每個項目包含3個用作標籤的TText,1個分辨率爲48x48的TImage指示「狀態」,以及一個用於選擇項目的複選框。在設備上時,滾動時會有很大的滯後時間。它往往是跳躍式的,零星的,不一致的。滾動TListBox時滯後
這是因爲我有太多的物品?還是因爲它們包含TTexts,Timage等? 或者我可以做些什麼來平滑TListbox的滾動過程。
我正在使用Delphi xe5開發iOS應用程序。我確實檢查了TListbox的'sorted'屬性是:= False;
UPDATE(響應傑裏道奇):
while XMLNode <> nil do begin
Main_Form.LBoxEntries.Items.Add('');
Item1:=Main_Form.LBoxEntries.ListItems[Main_Form.LBoxEntries.Items.Count-1];
Item1.Height := 80;
Item1.Width := ClientWidth;
if XMLNode.ChildNodes['SCANSTATUS'].Text = '0' then begin
Item1.ItemData.Bitmap := Main_Form.Red.Bitmap;
Item1.Tag := 0;
end;
if XMLNode.ChildNodes['SCANSTATUS'].Text = '1' then begin
Item1.ItemData.Bitmap := Main_Form.Orange.Bitmap;
Item1.Tag := 1;
end;
if XMLNode.ChildNodes['SCANSTATUS'].Text = '2' then begin
Item1.ItemData.Bitmap := Main_Form.Green.Bitmap;
Item1.Tag := 2;
end;
Customer := TText.Create(nil);
Customer.Parent := Item1;
Customer.Position.X := 95;
Customer.Position.Y := 8;
Customer.Text := XMLNode.childNodes['CUSTOMERNAME'].text;
Customer.Width := Item1.Width - 105;
Customer.WordWrap := False;
Customer.Color := TAlphaColors.Blue;
Customer.Trimming := TTextTrimming(1);
Customer.Height := 20;
Customer.Font.Size := 18;
Customer.HorzTextAlign := TTextAlign(1);
Customer.Anchors := [TanchorKind.akLeft,TanchorKind.akRight];
Customer.WordWrap := False;
Product := TText.Create(nil);
Product.Parent := Item1;
Product.Position.X := 105;
Product.Position.Y := 30;
Product.Text := 'Product: ' +XMLNode.childNodes['PRODUCT'].text;
Product.Width := Item1.Width - 115;
Product.Trimming := TTextTrimming(1);
Product.Height := 20;
Product.Font.Size := 15;
Product.HorzTextAlign := TTextAlign(1);
Product.Anchors := [TanchorKind.akLeft,TanchorKind.akRight];
Product.WordWrap := False;
QTY := TText.Create(nil);
QTY.Parent := Item1;
QTY.Position.X := 105;
QTY.Position.Y := 50;
QTY.Text := 'QTY: ('+XMLNode.childNodes['QTY'].text+')';
QTY.Width := Item1.Width - 115;
QTY.Trimming := TTextTrimming(1);
QTY.Height := 20;
QTY.Font.Size := 15;
QTY.HorzTextAlign := TTextAlign(1);
QTY.Anchors := [TanchorKind.akLeft,TanchorKind.akRight];
QTY.WordWrap := False;
Item1.ItemData.Detail := ' |' + XMLNode.childNodes['SID'].Text+'|'+
' |' + XMLNode.childNodes['CUSTOMERNAME'].Text+'|'+
' |' + XMLNode.childNodes['PRODUCT'].text+'|'+
' |' + XMLNode.childNodes['QTY'].Text+'| ';
XMLNode := XMLNode.NextSibling;
end;
Main_Form.LBoxEntries.EndUpdate;
沒有發佈操作/事件聯繫在一起的項目。
幾乎不可能在不知道更多細節的情況下得到恰當的答案。你有任何與這個列表框有關的事件嗎?如何添加項目?你有沒有關於這個你可以分享的任何代碼? –
已更新。謝謝你,@JerryDodge – ThisGuy
在我看來,你只是在這個列表中有很多數據。很難說如何防止這種滯後。 –