关于listview和时间的计算(50分)

  • 主题发起人 主题发起人 冰冰
  • 开始时间 开始时间

冰冰

Unregistered / Unconfirmed
GUEST, unregistred user!
在listview1中,应该怎样给不同的行置不同的背景颜色,比如一行显示空房,而
另一行是坏房,怎样置成不同颜色?怎样得到两个时间之间相差的分钟数?在线等待
 
1.ListView中显示不同背景颜色
procedure TfrmMain.ListViewCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
iTmp_Ind: integer;
begin
if Item = nil then Exit;
iTmp_Ind := Item.Index;
if ListView.Items[iTmp_Ind].Caption = '空房' then
Sender.Canvas.Font.Color := clRed
else
Sender.Canvas.Font.Color := clGreen;
end;

2.还没试...
 
两个时间之间相差的分钟数
(time1-time2)*24*60
注意:
(time1-time2)*24*60 这个值的类型是Extended
 
我说的是背景色和计算时间差的函数
 
2.时间差的分钟数:(Form1上放三个TLabel(Label1/Label2/Label3)控件和一个TButton控件(Button1))
以下方法在D6/7下才有效。
procedure TForm1.Button1Click(Sender: TObject);
var
slT1, slT2: TStrings;
iT1, iT2: integer;
begin
Label1.Caption := TimeToStr(Time); //时间1
Label2.Caption := TimeToStr(Time + 0.02); //时间2
slT1 := TStringList.Create;
slT2 := TStringList.Create;

//此方法在D6后才出现
slT1.Delimiter := ':';
slT1.DelimitedText := Label1.Caption;
slT2.Delimiter := ':';
slT2.DelimitedText := Label2.Caption;
//此方法在D6后才出现

iT1 := StrToInt(slT1[0]) * 60 + StrToInt(slT1[1]); //时间1分钟数
iT2 := StrToInt(slT2[0]) * 60 + StrToInt(slT2[1]); //时间2分钟数
Label3.Caption := IntToStr(iT2 - iT1);
slT1.Free;
slT2.Free;
end;
 
知道原理,自己做函数不就可以了么!
 
要改背景色只要将我上面的1程序稍加修改就行了,其实我上面已经给你方法了,自已稍微想
一想就可以达到要求了,自已什么都不想是不会有任何进步的。
Sender.Canvas.Font.Color := clRed; //字体颜色
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sender.Canvas.Brush.Color := clRed; //改成画笔颜色
 
多人接受答案了。
 
后退
顶部