📄 unpersonreportdisplay.pas
字号:
nWidth:=StrToInt(lvTableDetail.Items[i].SubItems[0]);
//合乎要求继续
i:=0;
while i< lvDisplayDetail.Items.Count do
begin
if(lvDisplayDetail.Items[i].Caption=sCaption) then
break;
i:=i+1;
end;
if(i = lvDisplayDetail.Items.Count)then
begin
lvDisplayDetail.items.BeginUpdate;
with lvDisplayDetail.Items.Add do
begin
Caption:=sCaption;
SubItems.Add(IntToStr(nWidth));
SubItems.Add(lvTableDetail.Items[i].SubItems[1]);
end;
lvDisplayDetail.items.EndUpdate;
end
else
Application.MessageBox(' 你选择的显示列已经存在,请检查是否重复!',
'系统信息管理窗',0);
end;
StatusBar1.Panels.Items[1].Text := '添加显示列成功';
spUp.Enabled:=True;
end;
procedure TfrmPersonReportDisplay.BitBtn2Click(Sender: TObject);
begin
spUp.Enabled:=True;
end;
//恢复使能,现在已经多余
procedure TfrmPersonReportDisplay.lvTableDetailClick(Sender: TObject);
begin
spUp.Enabled:=True;
spDown.Enabled:=True;
spSaveDB.Enabled:=True;
spAllUp.Enabled:=True;
end;
//恢复使能,现在已经多余
procedure TfrmPersonReportDisplay.lvDisplayDetailClick(Sender: TObject);
begin
spUp.Enabled:=True;
spDown.Enabled:=True;
spSaveDB.Enabled:=True;
spAllUp.Enabled:=True;
end;
procedure TfrmPersonReportDisplay.ComboBox1KeyPress(Sender: TObject;
var Key: Char);
begin
if (Key <> Char(VK_UP))and(Key <> Char(VK_DOWN))then
key := Char(0); //禁止用户键盘输入信息
end;
procedure TfrmPersonReportDisplay.ComboBox2KeyPress(Sender: TObject;
var Key: Char);
begin
if (Key <> Char(VK_UP))and(Key <> Char(VK_DOWN))then
key := Char(0); //禁止用户键盘输入信息
end;
procedure TfrmPersonReportDisplay.N10Click(Sender: TObject);
begin
close;
end;
//判断指定窗体指定LISTVIEW列在报表打印定制中是否允许删除
Function TfrmPersonReportDisplay.bAgreeDel(const FormCaption,
DisplayColumnCaption:string):boolean;
var qQryDB:TQuery;
begin
result:=True;
qQryDB:=TQuery.Create(nil);//创建查询
qQryDB.DatabaseName:=CDM.dbData.DatabaseName;
qQryDB.SessionName:=CDM.dbData.SessionName;
with qQryDB do
begin
Close;
SQL.Clear;//清SQL
SQL.Add('SELECT FORMCAPTION,A.TABLEDETAILID '
+'FROM SFRJPRINTDETAIL A,SFRJTABLEDETAIL B ');
SQL.Add('WHERE A.TABLEDETAILID=B.TABLEDETAILID AND FORMCAPTION='''
+FormCaption+''' AND CAPTION='''+DisplayColumnCaption+'''');
Open;
If Not eof then
begin
result:=False;
end;
qQryDB.Close;
qQryDB.Free;
qQryDB:=nil;
end;
end;
//取定制显示内容
procedure TfrmPersonReportDisplay.Refresh;
var qQryDB:TQuery;
i:integer;
begin
qQryDB:=TQuery.Create(nil);
qQryDB.DatabaseName:=CDM.dbData.DatabaseName;
qQryDB.SessionName:=CDM.dbData.SessionName;
with qQryDB do
begin
qQryDB.Close;//选择要显示的字段LISTVIEW初始化
qQryDB.SQL.Clear;
qQryDB.SQL.Add('SELECT A.TABLEDETAILID,DISPLAYTAB,'
+'CAPTION,WIDTH,FORMCAPTION FROM SFRJPERSONDISPLAY A,SFRJTABLEDETAIL B ');
qQryDB.SQL.Add('WHERE (A.STAFFID='''+sUserID+''')'
+' AND(A.TABLEDETAILID=B.TABLEDETAILID) AND (FORMCAPTION='''+sFormCaption
+''') ORDER BY DISPLAYTAB ASC');
qQryDB.Open;
qQryDB.First;
nShowNum:=qQryDB.RecordCount;
//Added by dpd 2003-12-30 for 在个性化中无显示内容时以统一的显示为准 begin
if nShowNum<=0 then//只有当有查询的记录数时才执行下面的操作
begin
qQryDB.Close;//选择要显示的字段LISTVIEW初始化
qQryDB.SQL.Clear;
qQryDB.SQL.Add('SELECT INARYSERIALID,DISPLAYTAB,CAPTION,B.TABLEDETAILID,'
+' COLUMNNAME,WIDTH,DATATYPE FROM SFRJDISPLAYDETAIL A,SFRJTABLEDETAIL B '
+'WHERE (A.TABLEDETAILID=B.TABLEDETAILID) AND (FORMCAPTION='''+sFormCaption
+''') ORDER BY DISPLAYTAB ASC');
qQryDB.Open;
qQryDB.First;
nShowNum:=qQryDB.RecordCount;
end;
//Added by dpd 2003-12-30 for 在个性化中无显示内容时以统一的显示为准 end
SetLength(aShowColum,nShowNum); //置数组长度
i:=0;
lvDisplayDetail.items.BeginUpdate;
lvDisplayDetail.items.Clear;
While not qQryDB.Eof do//循环写入到显示LISTVIEW中
begin
with lvDisplayDetail.Items.Add do
begin
Caption:=qQryDB.FieldByName('CAPTION').AsString;
aShowColum[i]:=Caption;
SubItems.Add(qQryDB.FieldByName('WIDTH').Asstring);
SubItems.Add(qQryDB.FieldByName('TABLEDETAILID').Asstring);
qQryDB.Next ;
i:=i+1;
end;
end;
lvDisplayDetail.items.Endupdate;
Close;//提供可以选择的字段LISTVIEW初始化
SQL.Clear;
SQL.Add('SELECT TABLEDETAILID,CAPTION,WIDTH,FORMCAPTION '
+'FROM SFRJTABLEDETAIL A WHERE FORMCAPTION='''+sFormCaption
+''' ORDER BY TABLEDETAILID');
Open;
First;
lvTableDetail.items.BeginUpdate;
lvTableDetail.items.Clear;
While not Eof do//循环写入到可显示LISTVIEW中
begin
with lvTableDetail.Items.Add do
begin
Caption:=FieldByName('CAPTION').AsString;
SubItems.Add(FieldByName('WIDTH').Asstring);
SubItems.Add(FieldByName('TABLEDETAILID').Asstring);
Next ;
end;
end;
lvTableDetail.items.endupdate;
qQryDB.Close;
qQryDB.Free;
qQryDB:=nil;
End;
end;
//执行刷新操作
procedure TfrmPersonReportDisplay.N12Click(Sender: TObject);
begin
Refresh;
end;
//执行刷新操作
procedure TfrmPersonReportDisplay.spRefreshClick(Sender: TObject);
begin
Refresh;
end;
//
procedure TfrmPersonReportDisplay.lvDisplayDetailColumnClick(Sender: TObject;
Column: TListColumn);
begin
Case Column.Index of
1: SortListView(lvDisplayDetail,Column.ID,ssNumeric,True);
0: SortListView(lvDisplayDetail,Column.ID,ssAlpha,True);
end;
end;
procedure TfrmPersonReportDisplay.lvTableDetailColumnClick(Sender: TObject;
Column: TListColumn);
begin
Case Column.Index of
1: SortListView(lvTableDetail,Column.ID,ssNumeric,True);
0: SortListView(lvTableDetail,Column.ID,ssAlpha,True);
end;
end;
procedure TfrmPersonReportDisplay.spExitClick(Sender: TObject);
begin
close;
end;
//将要操作的窗体标题传进来
procedure TfrmPersonReportDisplay.IniShow(FormCaption: String);
begin
sFormCaption:= FormCaption;
end;
procedure TfrmPersonReportDisplay.lvTableDetailDblClick(Sender: TObject);
begin
spUpClick(Sender);
end;
procedure TfrmPersonReportDisplay.lvDisplayDetailDblClick(Sender: TObject);
begin
spDownClick(Sender);
end;
procedure TfrmPersonReportDisplay.ChangeShowCloumn(const GoUp:boolean);
var lsCaptionName,lsWidth,lsTableDetailIDs:string;
i:integer;//用作防止行过长的数组下标
begin
i:=nRowSelected;
if GoUp then
begin//向上移
if lvDisplayDetail.ItemIndex<0 then
begin
end
else if lvDisplayDetail.ItemIndex>0 then
begin
nRowSelected:=lvDisplayDetail.ItemIndex;
i:=nRowSelected;
//做上下位置交换
lsCaptionName:=lvDisplayDetail.Items[i].Caption;
lsWidth:=lvDisplayDetail.Items[i].SubItems[0];
lsTableDetailIDs:=lvDisplayDetail.Items[i].SubItems[1];
lvDisplayDetail.Items[i].Caption:=lvDisplayDetail.Items[i-1].Caption;
lvDisplayDetail.Items[i].SubItems[0]:=lvDisplayDetail.Items[i-1].SubItems[0];
lvDisplayDetail.Items[i].SubItems[1]:=lvDisplayDetail.Items[i-1].SubItems[1];
lvDisplayDetail.Items[i-1].Caption:=lsCaptionName;
lvDisplayDetail.Items[i-1].SubItems[0]:=lsWidth;
lvDisplayDetail.Items[i-1].SubItems[1]:=lsTableDetailIDs;
lvDisplayDetail.Items.Item[i-1].Selected:=True;//改变焦点行
end;
end
else
begin//向下移
if lvDisplayDetail.ItemIndex<0 then
begin
end
else if lvDisplayDetail.ItemIndex<>lvDisplayDetail.Items.Count-1 then
begin
nRowSelected:=lvDisplayDetail.ItemIndex;
i:=nRowSelected;
//做上下位置交换
lsCaptionName:=lvDisplayDetail.Items[i].Caption;
lsWidth:=lvDisplayDetail.Items[i].SubItems[0];
lsTableDetailIDs:=lvDisplayDetail.Items[i].SubItems[1];
lvDisplayDetail.Items[i].Caption:=lvDisplayDetail.Items[i+1].Caption;
lvDisplayDetail.Items[i].SubItems[0]:=lvDisplayDetail.Items[i+1].SubItems[0];
lvDisplayDetail.Items[i].SubItems[1]:=lvDisplayDetail.Items[i+1].SubItems[1];
lvDisplayDetail.Items[i+1].Caption:=lsCaptionName;
lvDisplayDetail.Items[i+1].SubItems[0]:=lsWidth;
lvDisplayDetail.Items[i+1].SubItems[1]:=lsTableDetailIDs;
lvDisplayDetail.Items.Item[i+1].Selected:=True;//改变焦点行
end;
end;
end;
procedure TfrmPersonReportDisplay.SpeedButton1Click(Sender: TObject);
begin
ChangeShowCloumn(True);//向上移一行
end;
procedure TfrmPersonReportDisplay.SpeedButton2Click(Sender: TObject);
begin
ChangeShowCloumn(False);//向下移一行
end;
Function TfrmPersonReportDisplay.Execute:boolean;
begin
Result:=False;
frmPersonReportDisplay.ShowModal;
if bReShow=True then
Result:=True;
Application.ProcessMessages;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -