📄 ufunctionbasemoduleform.pas
字号:
unit uFunctionbaseModuleForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
uCustomModuleForm, StdCtrls, DBCtrls, DB, ADODB,
DBGrids, ComCtrls, ExtCtrls, Buttons, ImgList,
SynEdit, SynDBEdit, IniFiles, Grids, Mask,ClipBrd, Menus;
type
TFunctionbaseDialog = class;
TFunctionbaseModuleForm = class(TCustomModuleForm)
Panel1: TPanel;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
ADOQuery1: TADOQuery;
ADOQuery1DSDesigner: TWideStringField;
ADOQuery1DSDesigner2: TWideStringField;
ADOQuery1DSDesigner3: TMemoField;
ADOQuery1Uses: TWideStringField;
ADOQuery1DSDesigner4: TWideStringField;
ADOQuery1DSDesigner5: TDateTimeField;
ADOQuery1DSDesigner6: TWideStringField;
ADOQuery1id: TIntegerField;
ADOQuery1DSDesigner7: TBooleanField;
Panel2: TPanel;
pnlInfo: TPanel;
Label2: TLabel;
Label3: TLabel;
dbeName: TDBEdit;
Label5: TLabel;
Label6: TLabel;
Label1: TLabel;
dbeExplain: TDBEdit;
Label7: TLabel;
dbeDate: TDBEdit;
dbcbType: TDBComboBox;
pnltools: TPanel;
ImageList1: TImageList;
StatusBar: TStatusBar;
GroupBox1: TGroupBox;
Button1: TButton;
btnCopyCode: TButton;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
tvShowData: TTreeView;
TabSheet2: TTabSheet;
GroupBox2: TGroupBox;
Label12: TLabel;
Label11: TLabel;
Label10: TLabel;
Label9: TLabel;
Label4: TLabel;
Label8: TLabel;
cbFavorite: TCheckBox;
edtExplain: TEdit;
edtAnthor: TEdit;
edtName: TEdit;
cbType: TComboBox;
cbUses: TComboBox;
cbSearchByPY: TCheckBox;
GroupBox3: TGroupBox;
mmSql: TMemo;
Panel4: TPanel;
btnClear: TButton;
btnDoSql: TButton;
DBCheckBox1: TDBCheckBox;
ADOQuery1PYname: TWideStringField;
ADOQuery1PYauthor: TWideStringField;
ADOQuery1PYexplain: TWideStringField;
edtDate: TEdit;
dbmContent: TDBSynEdit;
dbeAuthor: TDBEdit;
dbcbUses: TDBComboBox;
Splitter: TSplitter;
btnShowHide: TButton;
DBNavigator1: TDBNavigator;
pmContentRightClick: TPopupMenu;
C1: TMenuItem;
P1: TMenuItem;
C2: TMenuItem;
A1: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure tvShowDataClick(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
procedure ADOQuery1BeforeDelete(DataSet: TDataSet);
procedure ADOQuery1BeforePost(DataSet: TDataSet);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnCopyCodeClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure WMSetContent(var t: TWmCopyData); message WM_COPYDATA;
procedure dbcbTypeChange(Sender: TObject);
procedure dbeNameChange(Sender: TObject);
procedure cbTypeChange(Sender: TObject);
procedure btnDoSqlClick(Sender: TObject);
procedure btnClearClick(Sender: TObject);
procedure ADOQuery1AfterPost(DataSet: TDataSet);
procedure btnShowHideClick(Sender: TObject);
procedure tvShowDataDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure tvShowDataDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure ADOQuery1AfterInsert(DataSet: TDataSet);
procedure ADOQuery1AfterDelete(DataSet: TDataSet);
procedure pmContentRightClickPopup(Sender: TObject);
procedure C1Click(Sender: TObject);
procedure P1Click(Sender: TObject);
procedure C2Click(Sender: TObject);
procedure A1Click(Sender: TObject);
procedure dbcbUsesDblClick(Sender: TObject);
private
{ Private declarations }
FFunctionbaseDialog: TFunctionbaseDialog;
FRootNode: Ttreenode;
FNodes: Ttreenodes;
FAllType: TStringList;
FIsAdd, FLoading, FModifyFlag: boolean;
FRecordCount:integer;
procedure LoadData;
procedure LoadDataSource;
procedure ShowData;
procedure FillItem;
procedure ShowRecordCount(Value:integer);
public
{ Public declarations }
end;
TFunctionbaseDialog = class(TCustomModuleDialog)
private
FModuleForm: TFunctionbaseModuleForm;
FPageIndex: Integer;
protected
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function Execute: Boolean; override;
published
property PageIndex: Integer read FPageIndex write FPageIndex
default 0;
end;
var
FunctionbaseModuleForm: TFunctionbaseModuleForm;
const
FunRecordCount: string = '共收集了%d个优秀函数';
implementation
uses uPasFileEditForm;
{$R *.dfm}
resourcestring
SDefultFunctionbaseDialogTitle = '函数库';
constructor TFunctionbaseDialog.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FModuleForm := TFunctionbaseModuleForm.Create(Self);
FModuleForm.FFunctionbaseDialog := Self;
FModuleForm.FDialogModule := Self;
FModuleForm.Caption := SDefultFunctionbaseDialogTitle;
FWindowForm := FModuleForm;
FPageIndex := 0;
end;
destructor TFunctionbaseDialog.Destroy;
begin
if FModuleForm.Visible then FModuleForm.Close;
FModuleForm.Free;
inherited Destroy;
end;
function TFunctionbaseDialog.Execute: Boolean;
begin
inherited Execute;
Result := FModuleForm.ShowModal = mrOK;
end;
procedure TFunctionbaseModuleForm.ShowRecordCount(Value:integer);
begin
StatusBar.Panels[1].Text := format(FunRecordCount,[Value]);
end;
//===================================================
//填充dbcbType.Items,DBGrid1.Columns[0].PickList,cbType.Items
procedure TFunctionbaseModuleForm.FillItem;
begin
dbcbType.DataSource := nil;
dbcbType.Items := FAllType;
cbType.Items := FAllType;
DBGrid1.Columns[0].PickList := FAllType;
dbcbType.DataSource := DataSource1;
end;
//===================================================
//在treeview显示当前记录
procedure TFunctionbaseModuleForm.ShowData;
var
temp: ttreenode;
I, index: integer;
begin
index := dbcbType.Items.IndexOf(ADOQuery1.FieldByName('类型').AsString);
if index <> -1 then
begin
temp := FRootNode.Item[index];
temp.Expanded := true;
try
for I := 0 to temp.Count do
if temp[I].Text = dbeName.Text then
begin
temp[I].Selected := true;
break;
end;
except
end;
end;
end;
procedure TFunctionbaseModuleForm.LoadDataSource;
begin
DBGrid1.DataSource := DataSource1;
dbcbType.DataSource := DataSource1;
dbeName.DataSource := DataSource1;
dbcbUses.DataSource := DataSource1;
dbeExplain.DataSource := DataSource1;
dbeDate.DataSource := DataSource1;
DBCheckBox1.DataSource := DataSource1;
dbmContent.DataSource := DataSource1;
end;
procedure TFunctionbaseModuleForm.LoadData;
var
temp: ttreenode;
I: integer;
begin
FLoading := true;
ADOQuery1.Open;
ADOQuery1.First;
FAllType := TStringList.Create;
FAllType.Sorted := true;
FAllType.Duplicates := dupIgnore;
while (not ADOQuery1.Eof) do
begin
FAllType.Add(ADOQuery1.FieldByName('类型').AsString);
ADOQuery1.Next;
end;
FillItem;
FRootNode := tvShowData.Items.Add(nil, 'Delphi函数仓库');
FRootNode.ImageIndex := 4;
FRootNode.SelectedIndex := 4;
FNodes := Ttreenodes.Create(tvShowData);
for I := 0 to dbcbType.Items.Count - 1 do
begin
temp := FNodes.AddChild(FRootNode, dbcbType.Items[I]);
temp.ImageIndex := 1;
temp.SelectedIndex := 2;
end;
ADOQuery1.First;
while (not ADOQuery1.Eof) do
begin
temp := tvShowData.Items.AddChild(FRootNode.Item[dbcbType.Items.IndexOf(ADOQuery1.FieldByName('类型').AsString)],
ADOQuery1.FieldByName('名称').AsString);
temp.ImageIndex := 3;
ADOQuery1.Next;
end;
FRootNode.Expanded := true;
FLoading := false;
loadDataSource;
FModifyFlag := false;
FRecordCount:=ADOQuery1.RecordCount;
ShowRecordCount(FRecordCount);
end;
procedure TFunctionbaseModuleForm.FormCreate(Sender: TObject);
var
FileName: string;
begin
inherited;
FileName := ExtractFilePath(Application.ExeName) + 'delphi.dll';
if FileExists(FileName) then
begin
if ADOQuery1.Active = True then ADOQuery1.Active := False;
ADOQuery1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + FileName + ';Persist Security Info=False;jet OLEDB:Database Password=VB6STKIT.DLLsoftpb;';
loaddata;
end
else
messagebox(handle, '数据库文件没找到!', 'Delphi函数工厂', 48);
end;
procedure TFunctionbaseModuleForm.tvShowDataClick(Sender: TObject);
begin
inherited;
if tvShowData.Selected = FRootNode then
begin
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from function');
open;
end;
FRootNode.Expanded := true;
end
else
if tvShowData.Selected.Parent = FRootNode then
begin
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from function');
SQL.Add('where 类型 ="' + tvShowData.Selected.Text + '"');
open;
end;
end
else
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from function');
SQL.Add('where 名称 ="' + tvShowData.Selected.Text + '"');
open;
end;
end;
procedure TFunctionbaseModuleForm.DBGrid1CellClick(Column: TColumn);
begin
inherited;
ShowData;
end;
procedure TFunctionbaseModuleForm.DBNavigator1Click(Sender: TObject;
Button: TNavigateBtn);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -