📄 promain.pas
字号:
unit ProMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls,DataDefine, ExtCtrls, StdCtrls, DBCtrls,adodb, DB,
Grids, DBGrids,Type_Edit, Menus,Msg_Edit,dm, Mask;
type
TMainFrm = class(TForm)
StatusBar1: TStatusBar;
Splitter1: TSplitter;
Panel1: TPanel;
DBGrid1: TDBGrid;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
PopupMenu2: TPopupMenu;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
Splitter2: TSplitter;
DM: TDBMemo;
N7: TMenuItem;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
TV: TTreeView;
Memo1: TMemo;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure TVClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure Memo1Exit(Sender: TObject);
procedure Memo1Enter(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
Function InitData():integer;
Function intmsg():integer;
public
end;
var
MainFrm: TMainFrm;
implementation
{$R *.dfm}
Function InitDB():integer;
begin
Tmp_Connection:=Tadoconnection.Create(nil);
Tmp_Connection.LoginPrompt:=False;
Tmp_Query:=TadoQuery.Create(nil);
ConnStr:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb;Jet OLEDB:Database Password=main()';
Tmp_Connection.ConnectionString:=ConnStr;
Tmp_Query.Connection:=Tmp_Connection;
Tmp_Query1:=TadoQuery.Create(nil);
Tmp_Query1.Connection:=Tmp_Connection;
//Tmp_Query.ConnectionString:=ConnStr;
end;
Function TmainFrm.intmsg():integer;
begin
dmfrm.Table_MSG.Open;
dmfrm.Table_MSG.DisableControls;
dmfrm.Table_MSG.Filtered:=false;
dmfrm.Table_MSG.Filtered:=true;
dmfrm.Table_MSG.EnableControls;
end;
Function TMainFrm.InitData():integer;
Var dbpassword:String;
Node,TmpNode:TTreenode;
tmp_pid,tmp_curid,i:integer;
sqlstr:string;
begin
Tmp_Query1.Close;
Tmp_Query1.SQL.Clear;
Tmp_Query1.SQL.Add('SELECT COUNT(*) FROM MSG');
Tmp_Query1.Prepared;
Tmp_Query1.Open;
TV.Items.Clear;
Node:=TV.Items.GetFirstNode;
TV.Items.AddChild(Node,'全部('+Tmp_Query1.Fields[0].ASSTRING+')');
Tmp_Query1.Close;
Node:=TV.TopItem;
setlength(node_pid,1);
node_pid[0]:=0;
While Node<>nil Do
Begin
tmp_curid:=node_pid[node.AbsoluteIndex];
Tmp_Query.Close;
Tmp_Query.SQL.Clear;
sqlstr:='SELECT ID,TYPE_NAME FROM TYPE_NAME WHERE PID=:PID ORDER BY TYPE_NAME ';
Tmp_Query.SQL.Add(sqlstr);
Tmp_Query.Parameters.ParamByName('PID').Value:=tmp_curid;
Tmp_Query.Prepared;
Tmp_Query.Open;
Tmp_Query1.Close;
Tmp_Query1.SQL.Clear;
Tmp_Query1.SQL.Add('SELECT COUNT(*) FROM MSG WHERE TYPE=:TYPE');
While Not Tmp_Query.Eof Do
Begin
Tmp_Query1.Close;
Tmp_Query1.Parameters.ParamByName('TYPE').Value:=Tmp_Query.fieldbyname('ID').AsInteger;
Tmp_Query1.Prepared;
Tmp_Query1.Open;
TmpNode:=TV.Items.AddChild(Node,Tmp_Query.fieldbyname('TYPE_NAME').AsString+'('+Tmp_Query1.Fields[0].ASSTRING+')');
setlength(node_pid,tv.Items.Count);
IF TmpNode.AbsoluteIndex<tv.Items.Count-1 Then
begin
For i:=length(node_pid)-1 downto TmpNode.AbsoluteIndex+1 do
node_pid[i]:=node_pid[i-1];
end;
node_pid[TmpNode.AbsoluteIndex]:=Tmp_Query.fieldbyname('ID').AsInteger;
Tmp_Query.Next;
end;
Node:=Node.GetNext;
end;
setlength(node_pid,tv.Items.Count+1);
Node:=TV.TopItem;
Tmp_Query.Close;
Tmp_Query1.Close;
Tmp_Query1.SQL.Clear;
Tmp_Query1.SQL.Add('SELECT COUNT(*) FROM MSG WHERE TYPE NOT IN(SELECT ID FROM TYPE_NAME)');
Tmp_Query1.Prepared;
Tmp_Query1.Open;
TmpNode:=TV.Items.AddChild(Node,'未分类('+Tmp_Query1.Fields[0].ASSTRING+')');
Tmp_Query1.Close;
node_pid[TmpNode.AbsoluteIndex]:=0;
end;
procedure TMainFrm.FormCreate(Sender: TObject);
begin
InitDB;
InitData;
tv.Items.Item[0].Expanded:=True;
end;
procedure TMainFrm.TVClick(Sender: TObject);
begin
if tv.Selected=nil then exit;
curfilt:=node_pid[TV.Selected.AbsoluteIndex];
intmsg();
end;
procedure TMainFrm.N1Click(Sender: TObject);
var Tmp_node:TTreeNode;
begin
if tv.Selected<>nil then
Begin
Edit_Node:=tv.Selected.AbsoluteIndex;
Edit_Type:=1;
Type_EditFrm.ShowModal;
if Type_EditFrm.ModalResult=mrOK Then
begin
InitData;
Tmp_node:=tv.Items.Item[Edit_Node];
While Tmp_node<>nil Do
begin
Tmp_node.Expanded:=True;
Tmp_node:=Tmp_node.Parent;
end;
End;
end;
end;
procedure TMainFrm.N3Click(Sender: TObject);
var Tmp_nodeindex:integer;
Tmp_node:TTreeNode;
begin
if tv.Selected<>nil then
Begin
Type_EditFrm.Name_Edit.Text:=TV.Selected.Text;
Edit_Node:=tv.Selected.AbsoluteIndex;
Edit_Type:=3;
Type_EditFrm.ShowModal;
if Type_EditFrm.ModalResult=mrOK Then
begin
InitData;
Tmp_node:=tv.Items.Item[Edit_Node];
While Tmp_node<>nil Do
begin
Tmp_node.Expanded:=True;
Tmp_node:=Tmp_node.Parent;
end;
End;
end;
end;
procedure TMainFrm.N2Click(Sender: TObject);
var Tmp_nodeindex:integer;
Tmp_node:TTreeNode;
begin
if tv.Selected<>nil then
Begin
Type_EditFrm.Name_Edit.Text:=TV.Selected.Text;
Edit_Node:=tv.Selected.AbsoluteIndex;
Edit_Type:=2;
Type_EditFrm.ShowModal;
if Type_EditFrm.ModalResult=mrOK Then
begin
InitData;
Tmp_node:=tv.Items.Item[Edit_Node].Parent;
While Tmp_node<>nil Do
begin
Tmp_node.Expanded:=True;
Tmp_node:=Tmp_node.Parent;
end;
End;
end;
end;
procedure TMainFrm.N4Click(Sender: TObject);
var Tmp_node:TTreeNode;
begin
if tv.Selected<>nil then
Begin
msg_Edit_Type:=1;
dmfrm.Table_MSG.Insert;
Msg_EditFrm.ShowModal;
end;
end;
procedure TMainFrm.N5Click(Sender: TObject);
var Tmp_node:TTreeNode;
begin
if tv.Selected<>nil then
Begin
msg_Edit_Type:=2;
dmfrm.Table_MSG.Edit;
Msg_EditFrm.ShowModal;
end;
end;
procedure TMainFrm.N6Click(Sender: TObject);
begin
if tv.Selected<>nil then
Begin
if MessageDlg('确定删除"'+#10+dmfrm.Table_MSG.Fields[1].AsString+'"?',mtConfirmation,mbOKCancel,0) = mrOk then
dmfrm.Table_MSG.Delete;
end;
end;
procedure TMainFrm.DBGrid1DblClick(Sender: TObject);
//Var TmpFrm:TMsg_EditFrm;
begin
//TmpFrm:=TMsg_EditFrm.Create(nil);
//TmpFrm.Show;
N5.Click;
//Msg_EditFrm.Show;
end;
procedure TMainFrm.FormShow(Sender: TObject);
begin
dmfrm.Table_MSG.Active:=True;
dmfrm.table_type.Active:=TRUE;
end;
procedure TMainFrm.N7Click(Sender: TObject);
begin
InitData;
end;
procedure TMainFrm.Memo1Exit(Sender: TObject);
begin
if memo1.Text='' Then
memo1.Text:='输入要检索的关键字'
end;
procedure TMainFrm.Memo1Enter(Sender: TObject);
begin
if pos('输入要检索的关键字',memo1.Text)>0 Then
BEGIN
memo1.Clear;
memo1.Font.Color:=$00000000
END;
end;
procedure TMainFrm.Button1Click(Sender: TObject);
begin
if (pos('输入要检索的关键字',memo1.Text)>0) OR (memo1.Text='') tHEN exit;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -