📄 unitmain.pas
字号:
end;
DBGridEh1.DataSource:=DataModule1.DataSource1;
end;
//----------------------PageCut-------------------------------
procedure TMainFrm.PageCut(pageIndex:integer;pageSize:integer);
var
sqlstr:string;
recordCount:integer;//数据表中的记录总数。
pageCount:integer; //总页数
tableName : string; //要查询的数据表。
queryFields:string; //要查询的字段。
primaryKey:string; //主键字段。
ascending:Boolean; //是否为升序排列。
begin
primaryKey:='ID';
tableName:='PersonInfo';
ascending:=True;
queryFields:='ID,Pname,sex,company,handtel,ctel,email,cemail,PID,hometel';
if condition='' then
exit;
recordCount:=rscount('select count(ID) as totalcount from PersonInfo where '+condition);
pageCount:=UnitPageCut.GetPageCount(recordCount,pagesize);
//-------------check --------------
if pageSize>recordCount then
pageSize:=recordCount;
if pageIndex<1 then
begin
self.LabIndex.Caption:=IntToStr(1);
self.LabTotal.Caption:=IntToStr(pageCount);
exit;
end;
if pageIndex>pageCount then
begin
LabIndex.Caption:=IntToStr(pageCount);
LabTotal.Caption:=IntToStr(pageCount);
exit;
end;
if (pageIndex<pageCount) and (pageIndex>1) then
begin
BtnFirst.Enabled:=True;
BtnUp.Enabled:=True;
BtnLast.Enabled:=True;
BtnNext.Enabled:=True;
end;
if (pageCount>1) and (pageIndex=pageCount) then
begin
BtnUp.Enabled:=True;
BtnFirst.Enabled:=True;
BtnNext.Enabled:=False;
BtnLast.Enabled:=False;
end;
if (pageIndex=1) and (pageCount>1) then
begin
BtnNext.Enabled:=True;
BtnLast.Enabled:=True;
BtnUp.Enabled:=False;
BtnFirst.Enabled:=False;
end;
//------------------------------------------------------------------------
sqlstr:=UnitPageCut.getSQLStr(pageIndex,recordcount,pagesize,
queryFields,tablename,primaryKey,ascending,condition);
DBGridFill(sqlstr);
LabIndex.Caption:=IntToStr(pageIndex);
LabTotal.Caption:=IntToStr(pagecount);
end;
procedure TMainFrm.BtnFirstClick(Sender: TObject);
begin
PageCut(1, pageSize);
end;
procedure TMainFrm.BtnUpClick(Sender: TObject);
var
pageIndex:integer;
begin
if StrToInt(self.LabIndex.Caption)>1 then
begin
pageIndex:=StrToInt(LabIndex.Caption)-1;
PageCut(pageIndex,pageSize);
end;
end;
procedure TMainFrm.BtnNextClick(Sender: TObject);
var
pageIndex:integer;
begin
//next
pageIndex:=(StrToInt(LabIndex.Caption)+1);
if pageIndex<=StrToInt(LabTotal.Caption) then
begin
PageCut(pageIndex,pageSize);
end;
end;
procedure TMainFrm.BtnLastClick(Sender: TObject);
var
recordCount:integer;
pageCount:integer;
begin
recordCount:=self.rscount('select count(ID) as totalcount from PersonInfo where '+condition);
pageCount:=UnitPageCut.GetPageCount(recordCount,pagesize);
PageCut(pageCount,pagesize);
//showmessage(IntToStr(pageCount)+'pagesize:'+IntToStr(pagesize));
end;
procedure TMainFrm.N6Click(Sender: TObject);
begin
AddGroupNode('新组');
end;
//self_proc Creating new Group on node
procedure TMainFrm.AddGroupNode(NodeName:string);
begin
if TreeView1.Selected= nil then
begin
showmessage('请选择创建分组的目录');
exit;
end;
if TreeView1.Selected.IsFirstNode then
begin
TreeUtil.AddChildNode(NodeName);
exit;
end;
with DataModule1.ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.add('select status from PersonInfo where ID='+IntToStr(TreeUtil.getSelNodeIndex));
open;
first;
end;
if DataModule1.ADOQuery1.RecordCount<>1 then
exit;
if DataModule1.ADOQuery1.FieldByName('status').AsString='1' then
begin
TreeUtil.AddNode(NodeName);
exit;
end else
begin
TreeUtil.AddChildNode(NodeName);
end;
DataModule1.ADOQuery1.Close;
end;
procedure TMainFrm.N12Click(Sender: TObject);
begin
if TreeView1.Selected =nil then
begin
showmessage('请先选择要删除的分组或联系人!');
exit;
end;
if TreeView1.Selected.IsFirstNode then
begin
showmessage('不能删除我的名片册');
exit;
end;
if TreeView1.Selected =nil then
exit;
if MessageBox(handle, PChar('你确认要删除"' + TreeView1.Selected.Text + '"和它的子项吗?'),
'提示', MB_ICONQUESTION + MB_YESNO) = IDYES then
TreeUtil.DeleteTree(TreeView1.Selected);
end;
//unitEdit selectGroupTreeView
procedure TMainFrm.Button7Click(Sender: TObject);
begin
EditFrm:=TEditFrm.Create(self);
EditFrm.TreeFill;//editFrm selfprocedure
EditFrm.TreeView1.FullExpand; //editFrm selfprocedure
EditFrm.ShowModal;
EditFrm.Free;
end;
procedure TMainFrm.TreeView1DragDrop(Sender, Source: TObject; X,
Y: Integer);
var
TargetNode, SourceNode: TTreeNode;
strID:string;
begin
TargetNode := TreeView1.DropTarget;
SourceNode := TreeView1.Selected;
strID:=IntToStr(PNodeData(TargetNode.Data)^.Index);
if getStatus(strID) then
begin
showmessage('Can not add to this node');
exit;
end else
begin
//if MessageBox(handle, '您确认要异动目录吗?', '提示', MB_ICONQUESTION + MB_YESNO) = IDYES then
if TreeUtil.ModifyNodePID(PNodeData(TargetNode.Data)^.Index, SourceNode) then
TreeUtil.FillTree;
end;
end;
procedure TMainFrm.TreeView1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
if Source = TreeView1 then Accept := True
else Accept := False;
end;
function TMainFrm.getStatus(PID:string):Boolean;
begin
Result:=False;
with DataModule1.ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.add('select status from PersonInfo where ID='+PID);
open;
first;
end;
if DataModule1.ADOQuery1.RecordCount=1 then
if DataModule1.ADOQuery1.FieldByName('status').AsString='1' then
Result:=True;
end;
procedure TMainFrm.N13Click(Sender: TObject);
begin
ExcelFrm:= TExcelFrm.Create(self);
if (IntToStr(self.PageControl1.ActivePageIndex)='1') and (DBNavigator1.DataSource <> nil) then
ExcelFrm.PersonExcel('');
if (IntToStr(PageControl1.ActivePageIndex)='0') and (DBGridEh1.DataSource<>nil) then
begin
//ExcelFrm.CopyDbDataToExcel([DBGridEh1]);
PrintDBGridEh1.DBGridEh := DBGridEh1;
PrintDBGridEh1.SetSubstitutes(['%[Today]',DateToStr(Now)]);
PrintDBGridEh1.Preview;
end;
ExcelFrm.Free;
end;
procedure TMainFrm.N16Click(Sender: TObject);
begin
AddFrm:=TAddFrm.Create(self);
AddFrm.ShowModal;
AddFrm.Free;
end;
procedure TMainFrm.S1Click(Sender: TObject);
begin
DBNavigator1.BtnClick(nbRefresh);
Treeutil.FillTree;
end;
procedure TMainFrm.SpeedButton8Click(Sender: TObject);
begin
EditFrm:=TEditFrm.Create(self);
EditFrm.TreeFill;//editFrm selfprocedure
EditFrm.TreeView1.FullExpand; //editFrm selfprocedure
EditFrm.ShowModal;
EditFrm.Free;
end;
procedure TMainFrm.N15Click(Sender: TObject);
begin
PassFrm:=TPassFrm.Create(self);
PassFrm.ShowModal;
PassFrm.Free;
//fresh treeutil
DBNavigator1.BtnClick(nbRefresh);
Treeutil.FillTree;
end;
procedure TMainFrm.DBGrid1DblClick(Sender: TObject);
var strid:string;
begin
if self.DBGridEh1.DataSource<>nil then
begin
strid:=DataModule1.ADOQuery1.FieldByName('id').AsString;
self.DBNavigaterFill('select * from PersonInfo where ID='+strid);
with DataModule1.ADOQuery2 do
begin
Close;
Sql.Clear;
Sql.Add('select * from PersonInfo where ID='+strid);
Open;
First;
end;
//Edit1.Text:=self.FindAs(DataModule1.ADOQuery2.FieldByName('PID').AsString);
PageControl1.ActivePageIndex:=1;
end;
end;
procedure TMainFrm.PageControl1Change(Sender: TObject);
begin
if self.PageControl1.ActivePageIndex=0 then
begin
DBGridEh1.Visible:=True;
end else
begin
DBGridEh1.Visible:=False;
end;
end;
procedure TMainFrm.DBGridEh1DblClick(Sender: TObject);
var strid:string;
begin
if self.DBGridEh1.DataSource<>nil then
begin
strid:=DataModule1.ADOQuery1.FieldByName('id').AsString;
self.DBNavigaterFill('select * from PersonInfo where ID='+strid);
with DataModule1.ADOQuery2 do
begin
Close;
Sql.Clear;
Sql.Add('select * from PersonInfo where ID='+strid);
Open;
First;
end;
//Edit1.Text:=self.FindAs(DataModule1.ADOQuery2.FieldByName('PID').AsString);
PageControl1.ActivePageIndex:=1;
end;
end;
procedure TMainFrm.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if (Rect.Top = DBGridEh1.CellRect(DBGridEh1.Col,DBGridEh1.Row).Top) and (not (gdFocused in State) or not DBGridEh1.Focused) then
DBGridEh1.Canvas.Brush.Color := clSkyBlue;
DBGridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
procedure TMainFrm.DBGridEh1TitleBtnClick(Sender: TObject; ACol: Integer;
Column: TColumnEh);
begin
try
if DBGridEh1.DataSource=nil then
exit;
if DataModule1.ADOQuery1.RecordCount<1 then
exit;
if (Column.Title.SortMarker = smNoneEh) or (Column.Title.SortMarker = smDownEh) then
begin
DataModule1.ADOQuery1.SORT := COLUMN.FIELDNAME;
Column.Title.SortMarker := smUpEh;
end
else
begin
DataModule1.ADOQuery1.SORT := COLUMN.FIELDNAME + ' DESC';
Column.Title.SortMarker := smDownEh ;
end;
except
exit;
end;
end;
procedure TMainFrm.DBGridEh1GetFooterParams(Sender: TObject; DataCol,
Row: Integer; Column: TColumnEh; AFont: TFont; var Background: TColor;
var Alignment: TAlignment; State: TGridDrawState; var Text: String);
begin
if (Column.Field.FieldName = 'PDescription') then Text := 'Qty = ' + Text
else if (Column.Field.FieldName = 'VName') then Text := Text + ' records';
end;
procedure TMainFrm.DBGridEh1DrawFooterCell(Sender: TObject; DataCol,
Row: Integer; Column: TColumnEh; Rect: TRect; State: TGridDrawState);
begin
DBGridEh1.DefaultDrawFooterCell(Rect,DataCol,Row,Column,State);
end;
procedure TMainFrm.SpeedButton3Click(Sender: TObject);
begin
AddInfoFrm:=TAddInfoFrm.Create(self);
AddInfoFrm.ShowModal;
AddInfoFrm.Free;
end;
procedure TMainFrm.SpeedButton4Click(Sender: TObject);
begin
AddGroupNode('新组');
end;
procedure TMainFrm.SpeedButton2Click(Sender: TObject);
begin
if TreeView1.Selected =nil then
begin
showmessage('请先选择要删除的分组或联系人!');
exit;
end;
if TreeView1.Selected.IsFirstNode then
begin
showmessage('不能删除我的名片册');
exit;
end;
if TreeView1.Selected =nil then
exit;
if MessageBox(handle, PChar('你确认要删除"' + TreeView1.Selected.Text + '"和它的子项吗?'),
'提示', MB_ICONQUESTION + MB_YESNO) = IDYES then
TreeUtil.DeleteTree(TreeView1.Selected);
end;
procedure TMainFrm.SpeedButton5Click(Sender: TObject);
begin
DBNavigator1.BtnClick(nbRefresh);
Treeutil.FillTree;
end;
procedure TMainFrm.DBEdit6KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
begin
SelectNext(Sender as TWinControl, True, True);
end else if (key<>#8) and (Key<#48) or (Key>#57) Then
begin
Key:='0';
end;
end;
procedure TMainFrm.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
SelectNext(Sender as TWinControl, True, True);
if key=#112 then
begin
showmessage('help');
end;
end;
procedure TMainFrm.FormShow(Sender: TObject);
begin
Application.Initialize;
strpath:=extractfilepath(application.exename);
TreeUtil := TTreeUtils.Create(TreeView1, DataModule1.ADOConnection1,'PersonInfo');
TreeUtil.FillTree;
MyPeedy(0);
PageControl1.ActivePageIndex:=0;
//转到分页查询
condition:='status=1';
PageCut(1,pageSize);
end;
procedure TMainFrm.MyPeedy(myAction:integer);
var
Peedy: IagentCtlCharacterEx;
Request2: IagentCtlRequest;
begin
try
case myAction of
0:
begin
Request1:= MyAgent.Characters.Load('Peedy',strpath+'chars\Peedy.acs');
Peedy := MyAgent.Characters.Character('Peedy');
Peedy.Show(0);
MyAgent.Connected := True;
Peedy.MoveTo((Screen.Width-Peedy.Get_Width) Div 2, (Screen.Height-Peedy.Get_Height) Div 2, 2 );
Peedy.Play('Greet');
Peedy.Speak('沈阳托拉斯通技术有限公司,欢迎你使用名片管理系统!','');
Peedy.MoveTo((Screen.Width-Peedy.Get_Width),(Screen.Height-Peedy.Get_Height-100),1);
Peedy.Play('Read'); //阅读
Peedy.Speak('沈阳托拉斯通技术有限公司!','');
end;
1:
MyAgent.Free;
2:
begin
MyAgent.Characters.Unload('Peedy');
MyAgent.Connected:=False;
end;
end;
except
end;
end;
procedure TMainFrm.N10Click(Sender: TObject);
begin
MyPeedy(2);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -