?? rgtcommon.~pas
字號:
unit RgtCommon;
interface
uses Windows,Registry,SysUtils, Classes,shellapi,dbtables,forms,comctrls,
FileCtrl,db,winsock,stdctrls,Dialogs;
type
TDataCode = class
Code:string;
end;
//*********************下拉框的處理***********************************
// 創建拉框 pSpace 為真預先加入的一個值,其code為空
Procedure CreateComboBox(Combobox:TCombobox;pQuery:TQuery;pCode,pLabel:string;pSpace:string);overload;
// 創建拉框 pSpace 為真預先加入的一個值,其code為空
Procedure CreateComboBox(Combobox:TCombobox;pQuery:TQuery;pCode,pCode1,pLabel:string;pSpace:string);overload
//釋放內存
Procedure FreeNode(Combobox:TCombobox);
//根據Code 得到索引號
Function GetCodeIndex(Combobox:TCombobox;pCode:string):integer;
//**********************************************************************
//********************建樹**********************************************
//釋放節點
procedure FreeTreeNode(treeview :TTreeview);
//插入節點
//不展開樹
Function InsertTreeNode(treeview :TTreeview;SNode:TTreeNode;
pLabel:string;pData:string):TTreeNode;
//樹展開時臨時地加上該城市下局向的用戶
ProceDure TreeExpand(Treeview :TTreeview;pQuery: TQuery;SNode:TTreeNode;P_jxdm,P_cityno,P_room :string;);
//**********************************************************************
implementation
//*************************************************************************
procedure CreateComboBox(Combobox: TCombobox; pQuery: TQuery;
pCode,pLabel, pSpace: string);overload;
var Ldata:TDataCode;
begin
FreeNode(Combobox);
ComboBox.Clear;
if pSpace<>'' then
begin
//先加一個空值
Ldata:=TdataCode.Create;
Ldata.Code:='';
ComboBox.Items.AddObject(pSpace,Ldata);
end;
if not pQuery.Active then exit;
//從數據庫里取數據
pQuery.First;
while not pQuery.Eof do
begin
Ldata:=TdataCode.Create;
Ldata.Code:=trim(pQuery.FieldByName(pCode).AsString);
ComboBox.Items.AddObject(trim(pQuery.FieldByName(pLabel).AsString),Ldata);
pQuery.Next;
end;
end;
procedure CreateComboBox(Combobox: TCombobox;
pQuery: TQuery; pCode,pCode1,pLabel: string; pSpace: string);overload
var Ldata:TDataCode;
begin
FreeNode(Combobox);
ComboBox.Clear;
if pSpace<>'' then
begin
//先加一個空值
Ldata:=TdataCode.Create;
Ldata.Code:='';
ComboBox.Items.AddObject(pSpace,Ldata);
end;
if not pQuery.Active then exit;
//從數據庫里取數據
pQuery.First;
while not pQuery.Eof do
begin
Ldata:=TdataCode.Create;
Ldata.Code:=trim(pQuery.FieldByName(pCode).AsString)
+'#'+trim(pQuery.FieldByName(pCode1).AsString);
ComboBox.Items.AddObject(trim(pQuery.FieldByName(pLabel).AsString),Ldata);
pQuery.Next;
end;
end;
procedure FreeNode(Combobox: TCombobox);
var
i:integer;
Ldata:TDataCode;
begin
for i:=0 to ComboBox.Items.Count - 1 do
begin
Ldata:=TdataCode(ComboBox.Items.Objects[i]);
if Ldata <> nil then Ldata.Free;
end;
end;
function GetCodeIndex(Combobox: TCombobox;
pCode: string): integer;
var
i:integer;
begin
result:=0;
for i:=0 to ComboBox.Items.Count - 1 do
begin
if (ComboBox.Items.Objects[i]<>nil) and (pCode = TDataCode(ComboBox.Items.Objects[i]).Code) then
begin
result:=i;
break;
end;
end;
end;
//****************************************************************************
//*****************************************************************************
procedure FreeTreeNode(treeview: TTreeview);
var
i:integer;
pnode:pchar;
begin
FOR i:=0 to TreeView.Items.Count - 1 do
begin
if TreeView.Items[i].Data<>nil then
begin
pnode:=pchar(TreeView.Items[i].Data);
FreeMem(pnode);
end;
end;
end;
function InsertTreeNode(treeview: TTreeview;
SNode: TTreeNode; pLabel, pData: string): TTreeNode;
var lNode:TTreeNode;
lData:pchar;
lChildNode:TTreeNode;
begin
//--------------------------------------------------------
//如果標簽長度>255只取255
if length(pLabel) >255 then pLabel :=copy(pLabel,0,255);
//如果節點指針不為''
if pData <> '' then
begin
GetMem(lData,length(pData)+1);
move(pData[1],lData^,length(pData)+1);
end
else lData:=nil;
lNode:=TreeView.Items.AddChildObject(SNode,pLabel,lData);
//lNode.Selected:=True;
result:=lNode;
end;
procedure TreeExpand(Treeview: TTreeview;pQuery: TQuery;
SNode: TTreeNode;P_jxdm,P_cityno,P_room :string;);
var
lTreeNode,NewRyNode,NewJXNode:TTreeNode;
str1,str2,str3,str4 :string;
begin
//如果是臨時結點就刪除
lTreeNode :=SNode.getFirstChild;
if lTreeNode=nil then exit;
if lTreeNode.Text<>'TEMP' then exit;
if lTreeNode.Text='TEMP' then
lTreeNode.Delete;
//t_d_county縣
case SNode.Level of
0:begin
with pQuery do
begin
close;
pQuery.sql.text :='select OFF_NO_HOME,CITYNO,HOME_NAME from T_D_COUNTY where CITYNO='+#39+pchar(SNode.Data)+#39;
open;
first;
while not Eof do
begin
str1 :=Fields[0].AsString;
str2 :=Fields[1].AsString;
str3 :=Fields[2].AsString;
//先把第一層建出來
NewJXNode:=
InsertTreeNode(TreeView,SNode,str3,str1+'#'+str2);
//TreeViewRy.Items.Add(nil,Fields[0].AsString+':'+Fields[1].AsString);
NewJXNode.ImageIndex := 0;
NewJXNode.SelectedIndex := 1;
//***************判斷該縣下有沒關系室有沒有,如果速度慢去掉*****************
//QueryTmp2.close;
//QueryTmp2.sql.text :='select count(ROOMID) from T_D_ROOM '+
//' where CITYNO='+#39+str2+#39+' and OFF_NO_HOME='+#39+str1+#39;
//QueryTmp2.open;
//if QueryTmp2.fields[0].asinteger >0 then
//begin
//加入臨時結點來強行加上+號
InsertTreeNode(TreeView,NewJXNode,'TEMP'
,'TEMP');
//end;
//************************************************************
//這樣建樹肯定不行的,一次行建樹了,慢!
{
if (jbdm=0)or(jx=QueryTmp1.Fields[0].AsInteger) then
InitJxry(NewJxNode,QueryTmp1.Fields[0].AsInteger);//增加單個局向內的人員 }
Next;
end;{while}
end;
end;
1:begin //加關系室
with pQuery do
begin
close;
pQuery.sql.text :=
'select ROOMID,OFF_NO_HOME,CITYNO,ROOM_NAME from T_D_ROOM where CITYNO='
+#39+p_cityno+#39+' and OFF_NO_HOME='+#39+p_jxdm+#39;
open;
first;
while not Eof do
begin
str1 :=Fields[0].AsString;
str2 :=Fields[1].AsString;
str3 :=Fields[2].AsString;
str4 :=Fields[3].AsString;
//先把第一層建出來
NewJXNode:=
InsertTreeNode(TreeViewRy,SNode,str4,str2+'#'+str3+'#'+str1);
//TreeViewRy.Items.Add(nil,Fields[0].AsString+':'+Fields[1].AsString);
NewJXNode.ImageIndex := 0;
NewJXNode.SelectedIndex := 1;
//***************判斷該縣下有沒關系室有沒有,如果速度慢去掉*****************
//QueryTmp2.close;
//QueryTmp2.sql.text :='select count(WK_NO) from T_F_MANAGER '+
//' where CITYNO='+#39+str3+#39+' and OFF_NO_HOME='+#39+str2+#39
//+' and RoomId='+#39+str1+#39;
//QueryTmp2.open;
//if QueryTmp2.fields[0].asinteger >0 then
//begin
//加入臨時結點來強行加上+號
InsertTreeNode(TreeViewRy,NewJXNode,'TEMP'
,'TEMP');
//end;
//************************************************************
//這樣建樹肯定不行的,一次行建樹了,慢!
{
if (jbdm=0)or(jx=QueryTmp1.Fields[0].AsInteger) then
InitJxry(NewJxNode,QueryTmp1.Fields[0].AsInteger);//增加單個局向內的人員 }
Next;
end;{while}
end;
end;
2:begin
//加用戶
with pQuery do
begin
close;
sql.clear;
sql.add('select WK_NO,NAME,STAT from T_F_MANAGER');
sql.add(' where Off_No_Home=:p1 and CITYNO=:p2 and RoomId=:p3 order by WK_NO,STAT');
ParamByName('p1').Asstring :=P_jxdm;
ParamByName('p2').Asstring :=P_cityno;
ParamByName('p3').Asstring :=P_room;
open;
first;
while not Eof do
begin
str1 :=Fields[0].AsString;
str2 :=Fields[1].AsString;
NewRyNode :=InsertTreeNode(TreeViewRy,SNode,str1+':'+str2,str1);
if FieldByName('STAT').AsString='0' then
begin
NewRyNode.ImageIndex := 6;
NewRyNode.SelectedIndex := 7;
end
else
begin //linlong 2003.03.15
NewRyNode.ImageIndex := 8;
NewRyNode.SelectedIndex := 8;
end;
Next;
end;{while}
end;{with}
end;
end;//end case
end;
//*****************************************************************************
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -