我正在使用 Delphi Sydney 10.4 FMX,我有一個 ListView 連接到一個帶有 liveBinding 的資料庫,ImageList 有 3 個影像。
在 ListView 中,我有 3 個欄位:影像、到期、域。
Expiry 和 Domain 是從資料庫中填充的,但我要顯示的影像取決于日期,例如:
Expiry = 今天或今天之前的日期:我想顯示 imageindex 0
Expiry = 從明天到今天的 30 天:我想顯示 imageindex 1
Expiry = 從今天起 31 天后:我想顯示 imageindex 2
procedure TForm1.DomainsListViewUpdateObjects(const Sender: TObject;
const AItem: TListViewItem);
begin
var DT : TDateTime;
DT := Now;
if DomainsListView.Items[DomainsListView.ItemIndex].Data['expiry'].AsString < datetostr(DT 30) then
DomainsListView.Items[DomainsListView.ItemIndex].Data['image'] := 1
else if DomainsListView.Items[DomainsListView.ItemIndex].Data['expiry'].AsString < DateToStr(DT) then
DomainsListView.Items[DomainsListView.ItemIndex].Data['image'] := 0
else if DomainsListView.Items[DomainsListView.ItemIndex].Data['expiry'].AsString > DateToStr(DT 31) then
DomainsListView.Items[DomainsListView.ItemIndex].Data['image'] := 2
end;
我使用了此代碼,但無法正常作業
uj5u.com熱心網友回復:
您正在比較String值,這不適用于比較日期。相反,您應該比較TDateTime值,并更加注意比較的順序。
嘗試更多類似的東西:
uses
..., System.SysUtils, System.DateUtils;
procedure TForm1.DomainsListViewUpdateObjects(const Sender: TObject;
const AItem: TListViewItem);
begin
var Item: TListViewItem := DomainsListView.Items[DomainsListView.ItemIndex]; // or: DomainsListView.Selected
var dtToday: TDateTime := System.DateUtils.Today;
var dtExpiry: TDateTime := System.SysUtils.StrToDate(Item.Data['expiry'].AsString);
if dtExpiry <= dtToday then
Item.Data['image'] := 0
else if dtExpiry < (dtToday 31) then
Item.Data['image'] := 1
else
Item.Data['image'] := 2;
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/460931.html
標籤:德尔福 火猴 delphi-10.4-悉尼 活绑定
