⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitmain.pas

📁 delphi做的名片管理软件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    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 + -