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

📄 ufunctionbasemoduleform.pas

📁 Delphi函数工厂。。。。。。。。。。。。。
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -