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

📄 frmmain.pas

📁 本文件中还有JSP、php和delphi等源程序
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit frmMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls, ImgList, DB, ADODB, StdCtrls, Menus;

type
  PMyData=^TMyData;
  TMyData=Record
    Id:Integer;
    NodeType:Integer;
  end;
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    Splitter1: TSplitter;
    Panel1: TPanel;
    Splitter2: TSplitter;
    ListView1: TListView;
    ImageList1: TImageList;
    ADOConnection1: TADOConnection;
    tblGroup: TADOQuery;
    ADOQuery1: TADOQuery;
    ScrollBox1: TScrollBox;
    txtTel: TEdit;
    txtQQ: TEdit;
    txtName: TEdit;
    txtMobile: TEdit;
    Label5: TLabel;
    Label4: TLabel;
    Label3: TLabel;
    Label2: TLabel;
    Label1: TLabel;
    dtpBirthday: TDateTimePicker;
    BtnUpdate: TButton;
    BtnPost: TButton;
    BtnDelete: TButton;
    BtnCancel: TButton;
    BtnAdd: TButton;
    PopupMenu1: TPopupMenu;
    AddGroup: TMenuItem;
    DeleteGroup: TMenuItem;
    RenameGroup: TMenuItem;
    N4: TMenuItem;
    About: TMenuItem;
    ADOQuery2: TADOQuery;
    tblRecord: TADOQuery;
    tblMap: TADOQuery;
    procedure FormCreate(Sender: TObject);
    procedure TreeView1Expanding(Sender: TObject; Node: TTreeNode;
      var AllowExpansion: Boolean);
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
    procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure TreeView1ContextPopup(Sender: TObject; MousePos: TPoint;
      var Handled: Boolean);
    procedure AboutClick(Sender: TObject);
    procedure RenameGroupClick(Sender: TObject);
    procedure TreeView1Editing(Sender: TObject; Node: TTreeNode;
      var AllowEdit: Boolean);
    procedure TreeView1Edited(Sender: TObject; Node: TTreeNode;
      var S: String);
    procedure AddGroupClick(Sender: TObject);
    procedure DeleteGroupClick(Sender: TObject);
    procedure BtnAddClick(Sender: TObject);
    procedure BtnPostClick(Sender: TObject);
    procedure BtnCancelClick(Sender: TObject);
    procedure BtnDeleteClick(Sender: TObject);
    procedure BtnUpdateClick(Sender: TObject);
  private
    { Private declarations }
    i:Integer;//用于新建组
    ActionCode:Integer;//记录上一步操作类型
    LastSelNode:TTreeNode;//最后一次选择的节点
    procedure LoadDataForTreeView;
    procedure InitListView;
    procedure LoadGroupDataForListView(Id:Integer);
    procedure InitRightPanel;
    Function CheckValid:Boolean;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses about;
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  i:=1;
  ActionCode:=0;
  LoadDataForTreeView;
  InitListView;
  InitRightPanel;
end;

procedure TForm1.InitRightPanel;
begin
  dtpBirthday.DateTime:=now;
end;

procedure TForm1.InitListView;
var
  NewCol:TListColumn;
begin
  ListView1.ViewStyle:=vsReport;
  with ListView1 do
  begin
    Color:=RGB($FF,$FF,$E0);
    NewCol:=Columns.Add;
    NewCol.Caption:='姓名';
    NewCol:=Columns.Add;
    NewCol.Caption:='生日';
    NewCol:=Columns.Add;
    NewCol.Caption:='电话';
    NewCol:=Columns.Add;
    NewCol.Caption:='手机';
    NewCol:=Columns.Add;
    NewCol.Caption:='OICQ号';
  end;
end;

procedure TForm1.LoadDataForTreeView;
var
  RootNode,GroupNode,RecordNode:TTreeNode;
  PtrMyData:PMyData;
  NodeName:String;
begin
  TreeView1.Color:=RGB($FF,$FF,$E0);
  {添加根节点}
  RootNode:=TreeView1.Items.Add(Nil,'通讯录');
  RootNode.ImageIndex:=0;
  RootNode.SelectedIndex:=0;
  {添加组节点}
  with tblGroup do
  begin
    Open;
    while not Eof do
    begin
      PtrMyData:=new(PMyData);
      PtrMyData.id:=FieldByName('GROUP_ID').AsInteger;
      PtrMyData.NodeType:=0;//是组节点
      NodeName:=FieldByName('GROUP_NAME').AsString;
      GroupNode:=TreeView1.Items.AddChildObject(RootNode,NodeName,PtrMyData);
      GroupNode.ImageIndex:=1;
      GroupNode.SelectedIndex:=1;
      RecordNode:=TreeView1.items.AddChild(GroupNode,'none');
      next;
    end;
    Close;
  end;
  {初始化TTreeView控件的展开状态}
  RootNode.Expanded:=True;
end;

procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
  var AllowExpansion: Boolean);
var
  GroupId:Integer;
  RecordNode:TTreeNode;
  PtrMyData:PMyData;
  RecordName:String;
begin
  {如果要展开的是组节点,则初始化本小组所对应的记录节点}
  if (Node.Parent<>Nil)and(Node.Parent.Text='通讯录') then
  begin
    {先删除每个组内的多余节点}
    Node.getFirstChild.Delete;
    {实际添加本小组所对应的记录节点}
    GroupId:=(PMyData(Node.Data))^.id;
    with ADOQuery1 do
    begin
      SQL.Clear;
      SQL.Add('SELECT MAP_RECORD_ID,RECORD_NAME');
      SQL.Add('FROM TXL_MAP,TXL_RECORD');
      SQL.Add('WHERE MAP_GROUP_ID='+IntToStr(GroupId));
      SQL.Add('AND MAP_RECORD_ID=RECORD_ID');
      Open;
      While not Eof do
      begin
        RecordName:=FieldByName('RECORD_NAME').AsString;
        PtrMyData:=new(PMyData);
        PtrMyData.Id:=FieldByName('MAP_RECORD_ID').AsInteger;
        PtrMyData.NodeType:=1;//是记录节点
        RecordNode:=TreeView1.Items.AddChildObject(Node,RecordName,PtrMyData);
        RecordNode.ImageIndex:=2;
        RecordNode.SelectedIndex:=2;
        next;
      end;
      Close;
    end;
  end;
end;

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
  RecordId:Integer;
  GroupId:Integer;
begin
  if(Node.Level=2)then//是记录节点
  begin
    {取得存储在记录节点中的Id号}
    RecordId:=(PMyData(Node.Data))^.Id;
    {根据Id号获得对应记录的其他信息填入右上部面板中}
    with ADOQuery1 do
    begin
      SQL.Clear;
      SQL.Add('SELECT * FROM TXL_RECORD');
      SQL.Add('WHERE RECORD_ID='+IntToStr(RecordId));
      Open;
      txtName.Text:=FieldByName('RECORD_NAME').AsString;
      dtpBirthday.DateTime:=FieldByName('RECORD_BIRTHDAY').AsDateTime;
      txtQQ.Text:=FieldByName('RECORD_OICQ').AsString;
      txtTel.Text:=FieldByName('RECORD_TEL').AsString;
      txtMobile.Text:=FieldByName('RECORD_MOBILE').AsString;
      Close;
    end;
    {改变控件的使能状态}
    txtName.Enabled:=True;
    dtpBirthday.Enabled:=True;
    txtQQ.Enabled:=True;
    txtTel.Enabled:=True;
    txtMobile.Enabled:=True;
    BtnAdd.Enabled:=True;
    BtnDelete.Enabled:=True;
    BtnUpdate.Enabled:=True;
    BtnPost.Enabled:=True;
    BtnCancel.Enabled:=True;
  end
  else//不是记录节点
  begin
    {清空右上面板内显示的内容}
    txtName.Text:='';
    dtpBirthday.DateTime:=now;
    txtQQ.Text:='';
    txtTel.Text:='';
    txtMobile.Text:='13*********';
    {改变控件使能状态}
    txtName.Enabled:=False;
    dtpBirthday.Enabled:=False;
    txtQQ.Enabled:=False;
    txtTel.Enabled:=False;
    txtMobile.Enabled:=False;
    BtnAdd.Enabled:=False;
    BtnDelete.Enabled:=False;
    BtnUpdate.Enabled:=False;
    BtnPost.Enabled:=False;
    BtnCancel.Enabled:=False;
  end;
  if(Node.Level=1)then
    GroupId:=PMyData(Node.Data)^.Id
  else if(Node.Level=2)then
    GroupId:=PMyData(Node.Parent.Data)^.Id;
  if(Node.Level<>0)then
    LoadGroupDataForListView(GroupId);
end;

procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  CurrNode:TTreeNode;
begin
  if(Button=mbRight)then
  begin
    CurrNode:=TreeView1.GetNodeAt(x,y);
    if (CurrNode<>Nil) then
      CurrNode.Selected:=True;
  end;
end;

procedure TForm1.TreeView1ContextPopup(Sender: TObject; MousePos: TPoint;
  var Handled: Boolean);
var
  CurrNode:TTreeNode;
begin
  CurrNode:=TreeView1.GetNodeAt(MousePos.X,MousePos.Y);
  if CurrNode<>Nil then
  begin
    if(CurrNode.Level=0)then
    begin
      AddGroup.Enabled:=True;
      DeleteGroup.Enabled:=False;
      RenameGroup.Enabled:=False;
      About.Enabled:=True;
    end
    else if(CurrNode.Level=1)then
    begin
      AddGroup.Enabled:=True;
      DeleteGroup.Enabled:=True;
      RenameGroup.Enabled:=True;
      About.Enabled:=True;
    end
    else
    begin
      AddGroup.Enabled:=False;
      DeleteGroup.Enabled:=False;
      RenameGroup.Enabled:=False;
      About.Enabled:=True;
    end;
  end
  else
    Handled:=True;
end;

procedure TForm1.AboutClick(Sender: TObject);
begin
  frmAbout.ShowModal;
end;

procedure TForm1.RenameGroupClick(Sender: TObject);
begin
  TreeView1.Selected.EditText;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -