📄 uncustomdisplay.pas
字号:
TotalDisplayColumNumber:=qQryDB.RecordCount;//取得查询到的记录数
if TotalDisplayColumNumber>0 then//只有当有查询的记录数时才执行下面的操作
begin
setlength(colum,TotalDisplayColumNumber);
setlength(aDataType,TotalDisplayColumNumber);
i:=0;
Lstvaffair.Columns.Clear;//为重新生成列而清空列
//最多显示31列
while ((not qQryDB.eof) and (i<TotalDisplayColumNumber)) do
begin
colum[i]:=qQryDB.FieldByName('INARYSERIALID').AsInteger;
aDataType[i]:=qQryDB.FieldByName('DATATYPE').AsInteger;
Lstvaffair.Parent := lSoueceParentName;//传递所属对象
NewColumn := Lstvaffair.Columns.Add;//增加一列
NewColumn.Caption := qQryDB.FieldByName('CAPTION').AsString;
NewColumn.Width:=qQryDB.FieldByName('WIDTH').AsInteger * 8;//转为点阵
i:=i+1;
qQryDB.Next;//取下一列
end;
end;
End;
end;
qQryDB.close;
qQryDB.Free;
qQryDB:=nil;
except
;
end;
end;
//2、rlist是存放TListData的TList(一个数组),在调用前应该先为其传数据
//3、Item:TListItem是LISTVIEW中ONDATA函数的Item参数
//4、每个LISTVIEW需要显示的字段变量名称及宽度应该按显示顺序存在一个数据库表中,
// 程序在启动时需要一次性读出
{[1,3,4,5,7,9,12,15,16]colum[1]}
Function TCustomDisplay.ShowListView(var CListView:TListview;Item:TListItem;var CList:TList):PListData;
var q:PListData;
i,j:integer;
begin
try
begin
if Item.Index >= CList.Count then Exit;
q := CList[item.index]; //取出一条记录
j:=StrToInt(q^[0]);
if TotalDisplayColumNumber<=0 then Exit;
if(bShowStateColor=True) then//需要显示不同状态不同颜色
begin
try
CListView.Canvas.Brush.Color:=aStateColor[j];
except
WriteLog(CMemo,'在定制用不同颜色显示不同状态时发生错误(TCustomDisplay.ShowListView)');
end;
end;
item.Caption := q^[colum[0]]; //第一个列
// item.StateIndex:=StrToInt(q^[colum[0]]);//在第0列显示定制图标太危险,暂时不开放
for i:=1 to TotalDisplayColumNumber-1 do//循环写入其它列信息
begin
item.SubItems.Add(q^[colum[i]]); //将显示列添加到LISTVIEW中//colum[i]]中的内容是显示列在指针数组对应的位置索引号。
if ((nIconInArray>0 )and (nIconInArray=colum[i])) then //只有第0列后才允许添加图标/图片显示
item.SubItemImages[i-1] := j+nIconToBaseStateSeq;//将该行列状态在数组最后的图标显示出来,定死状态在第0列存放
// item.SubItemImages[i-1] := StrToInt(q^[colum[i]])+nIconToBaseStateSeq;//Modied by dpd 2006-08-08
end;
ShowListView:= q;
end;
except
WriteLog(CMemo,'在进行LISTVIEW定制显示时发生错误(TCustomDisplay.ShowListView)');
end;
end;
procedure TCustomDisplay.SourceViewColumnSort(const Column:Integer);
begin
if aDataType[Column]=0 then
SortListView(LstvAffair, Column, ssNumeric, FAsc)
else if aDataType[Column]=1 then
SortListView(LstvAffair, Column, ssAlpha, FAsc)
else if aDataType[Column]=2 then
SortListView(LstvAffair, Column, ssDateTime, FAsc);
FAsc := not FAsc;
end;
//对呈现数据列表中第nPosition行的第nColumn列用新字符串替换
Function TCustomDisplay.ChgRowInPosition(var CList:TList;var nPosition:Integer;
var nColumn:integer;var str:string):Boolean;
var q:PListData;
begin
try
Result:=False;
begin
q:=CList[nPosition];
q[nColumn]:=str;
Result:=True;
end;
except
WriteLog(CMemo,'在进行CList赋值时发生错误(TCustomDisplay.ChgRowInPosition)');;
end;
end;
//从CList列表中的第nPosition行(位置)开始,所有行向后面移一行,最后一行数据丢弃
Function TCustomDisplay.ShiftRowToBack(var nPosition:Integer;var CList:TList):Boolean;
var
i:Integer;
begin
try
Result:=False;
begin
for i:=CList.Count-1 downto nPosition do
begin
CList[i]:=CList[i-1];
end;
Result:=True;
end;
except
WriteLog(CMemo,'在进行CList移位时发生错误(TCustomDisplay.ShiftRowToBack)');;
end;
end;
//删除指定LISTVIEW和LIST中的具体位置的行
Function TCustomDisplay.DeleteRow(var Position:integer;var CList:TList):Boolean;
var
i:Integer;
begin
try
Result:=False;
begin
i:=Position;
Dispose(CList[i]);
CList.Delete(i);
Result:=True;
end;
except
WriteLog(CMemo,'在进行CList指定行删除时发生错误(TCustomDisplay.ShiftRowToBack)');;
end;
end;
//在CListview中显示CList中的数据
procedure TCustomDisplay.RefreshListview(var CListview:TListView;var CList:TList);
begin
CListView.items.Clear() ;
CListView.items.BeginUpdate();
CListView.Items.Count := CList.Count ;
CListView.Items.EndUpdate ;
end;
//向LISTVIEW列表指定列中增加指定的图标
//nColumn>=0,nColumn=0表示从LISTVIEW的第2列开始增加图标
Function TCustomDisplay.AddIconToColumn(var CListView:TListview;var nColumn,nIconSeq:Integer):Boolean;
var tmpList: TListItem;
begin
try
Result:=False;
begin
tmpList:=CListView.Items.Item[nColumn];
tmpList.SubItemImages[nColumn] := nIconSeq;
Result:=True;
end;
except;
end;
end;
//设置定制显示类中的状态颜色数组
//目的:为具有不同状态的指定列设置不同的颜色做基础准备
{
0:白色背景
1:红色背景
2:黄色背景
3:绿色背景
4:天蓝色背景
5:水红色背景
6:中灰色背景
7:浅绿色背景
8:墨绿色背景
9:黑色前景淡绿色背景}
procedure TCustomDisplay.SetStateColor;
begin
aStateColor[0]:=clWhite;
aStateColor[1]:=clRed;
aStateColor[2]:=clYellow;
aStateColor[3]:=clLime;
aStateColor[4]:=clSkyBlue;
aStateColor[5]:=clFuchsia;
aStateColor[6]:=clMedGray;
aStateColor[7]:=clAqua;
aStateColor[8]:=clMoneyGreen;
aStateColor[9]:=$00E6F0E1;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -