|

楼主 |
发表于 2008-12-31 13:51:56
|
显示全部楼层
对您提供的例子没问题,但在3012版本下的邮件库代码按照下面方法增加Checkbox列、修改代码后还是有9楼的报错。
修改地方如下:
1. 在第一列增加TTreeListCheckColumn 类型的 checkbox 列,新增的Tag 设置为0 ,原有的12个依次增加一个;
2. 修改 GetDefaultWidthByTag 增加一个 0: Result := 50; 原有的依次往下递增一个;
3. 修改 GetDefaultVisibleByTag 增加一个 0: Result := True; 原有的依次往下递增一个;
4. 修改 TMailCenterForm.InitMailIndexItem 代码如下:
for I := 0 to glMail.ColumnCount - 1 do
case glMail.Columns[I].Tag of //这里用Tag来控制说明排序比较好
{ 0: AItem.Strings[I] := lAtta; //原3012 版本邮件库代码
1: AItem.Strings[I] := lPriority;
... ...
//SMP Modify 20060817下面这个是新加上去的 便于处理同庆问题他们要用已读未读排序
11: if Assigned(lFolderObject) and (lFolderObject.Kind = mtSent) then
}
1: AItem.Strings[I] := lAtta; // 增加checkbox 后修改的代码
2: AItem.Strings[I] := lPriority;
3: AItem.Strings[I] := lMailRef.MailInfo.From;
4: AItem.Strings[I] := lMailRef.MailInfo.Tos;
5: AItem.Strings[I] := lMailRef.MailInfo.Subject;
6: AItem.Strings[I] := FormatDateTime('yyyy-mm-dd hh:mm:ss', lMailRef.Time); //lMailRef.MailInfo.Date);
7: AItem.Strings[I] := FormatDateTime('yyyy-mm-dd hh:mm:ss', lMailRef.Time);
8: AItem.Strings[I] := intToStr(lMailRef.Size);
9: AItem.Strings[I] := lAccountID;
10: AItem.Strings[I] := lMailRef.MailInfo.Cc;
11: AItem.Strings[I] := lMailRef.MailInfo.HeaderText; //读未读排序
12: if Assigned(lFolderObject) and (lFolderObject.Kind = mtSent) then
begin
with TSendedMailState.Create(lMailRef.MailGUID) do
if State <> '' then
AItem.Strings[I] := State
else
AItem.Strings[I] := StrUtils.IfThen(((lMailRef.State and msReaded) <> msReaded), '未读', '已读');
end
else
AItem.Strings[I] := StrUtils.IfThen(((lMailRef.State and msReaded) <> msReaded), '未读', '已读');
end;
5. 增加6楼代码。 |
|