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

📄 uapimoduleform.pas

📁 Delphi函数工厂。。。。。。。。。。。。。
💻 PAS
字号:
unit uApiModuleForm;
//{$I directives.inc}
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uCustomModuleForm, StdCtrls, ExtCtrls, Buttons, ComCtrls, DB,
  ADODB, DBCtrls;

type
  TApiDialog = class;
  TApiModuleForm = class(TCustomModuleForm)
    DataSource1: TDataSource;
    daoqApi: TADOQuery;
    daoqApiDSDesigner: TWideStringField;
    daoqApiDSDesigner2: TMemoField;
    daoqApiDSDesigner3: TWideStringField;
    daoqApiDSDesigner4: TWideStringField;
    daoqApiwin95: TBooleanField;
    daoqApiwinNT: TBooleanField;
    daoqApiDSDesigner5: TMemoField;
    daoqApiDSDesigner6: TMemoField;
    daoqApiDSDesigner7: TMemoField;
    daoqApiDSDesigner8: TMemoField;
    daoqApifunname: TADOQuery;
    DataSource2: TDataSource;
    dbmFullName: TDBMemo;
    dbchnt: TDBCheckBox;
    dbch95: TDBCheckBox;
    dbmparameter: TDBMemo;
    dbmother: TDBMemo;
    dbmreturn: TDBMemo;
    dbmexplain: TDBMemo;
    mmShowdata: TMemo;
    lbShowname: TListBox;
    Panel1: TPanel;
    Label1: TLabel;
    sbSearch: TSpeedButton;
    rgSearchtype: TRadioGroup;
    edtSearch: TEdit;
    Splitter1: TSplitter;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure lbShownameClick(Sender: TObject);
    procedure edtSearchChange(Sender: TObject);
    procedure rgSearchtypeClick(Sender: TObject);
    procedure sbSearchClick(Sender: TObject);
    procedure edtSearchKeyPress(Sender: TObject; var Key: Char);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
    ApiDialog: TApiDialog;
    procedure loaddata;
    procedure showdata(const funname: string);
  public
    { Public declarations }
  end;
  TApiDialog = class(TCustomModuleDialog)
  private
    FModuleForm: TApiModuleForm;
    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
  ApiModuleForm: TApiModuleForm;

implementation
{$R *.dfm}

resourcestring
  SDefultFuntionDialogTitle = 'Api函数中文说明';
{ TMessageBoxDialog}

constructor TApiDialog.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FModuleForm := TApiModuleForm.Create(Self);
  FModuleForm.ApiDialog := Self;
  FModuleForm.FDialogModule := Self;
  FModuleForm.Caption := SDefultFuntionDialogTitle;
  FWindowForm := FModuleForm;
  FPageIndex := 0;
end;

destructor TApiDialog.Destroy;
begin
  if FModuleForm.Visible then FModuleForm.Close;
  FModuleForm.Free;
  inherited Destroy;
end;

function TApiDialog.Execute: Boolean;
begin
  inherited Execute;
  Result := FModuleForm.ShowModal = mrOK;
end;

procedure TApiModuleForm.showdata(const funname: string);
var
  name, libname, alias, os: string;
  I: integer;
  tempstrlist: tstringlist;
begin
  daoqApi.Close;
  os := '';
  daoqApi.SQL.Clear;
  daoqApi.SQL.Add('select * from apifun');
  daoqApi.SQL.Add('where 函数="' + funname + '"');
  daoqApi.Open;
  daoqApifunname.SQL.Clear;
  daoqApifunname.SQL.Add('select FullName from funclass');
  daoqApifunname.SQL.Add('where Name="' + funname + '"');
  daoqApifunname.Open;
  name := daoqApi.FieldByName('函数').asstring;
  libname := daoqApi.FieldByName('库名').asstring;
  alias := daoqApi.FieldByName('别名').asstring;
  if dbch95.Checked then
    os := os + '95/98/ME';
  if dbchnt.Checked then
    os := os + '/NT/2000/XP';
  tempstrlist := tstringlist.Create;
  mmShowdata.Clear;
  tempstrlist.Add('');
  tempstrlist.Add('【函数名】');
  tempstrlist.Add(name);
  tempstrlist.Add('');
  tempstrlist.Add('【库名】');
  tempstrlist.Add(libname);
  if alias <> '' then
  begin
    tempstrlist.Add('');
    tempstrlist.Add('【别名】');
    tempstrlist.Add(alias);
  end;
  tempstrlist.Add('');
  tempstrlist.Add('【适用范围】');
  tempstrlist.Add(os);
  tempstrlist.Add('');
  tempstrlist.Add('【VB声明】');
  for I := 0 to dbmexplain.Lines.Count do
    tempstrlist.Add(dbmFullName.Lines[I]);
  if trim(dbmexplain.Text) <> '' then
  begin
    tempstrlist.Add('');
    tempstrlist.Add('【说明】');
    for I := 0 to dbmexplain.Lines.Count do
      tempstrlist.Add(dbmexplain.Lines[I]);
  end;
  if trim(dbmreturn.Text) <> '' then
  begin
    tempstrlist.Add('');
    tempstrlist.Add('【返回值】');
    for I := 0 to dbmreturn.Lines.Count do
      tempstrlist.Add(dbmreturn.Lines[I]);
  end;
  if trim(dbmother.Text) <> '' then
  begin
    tempstrlist.Add('');
    tempstrlist.Add('【备注】');
    for I := 0 to dbmother.Lines.Count do
      tempstrlist.Add(dbmother.Lines[I]);
  end;
  if trim(dbmparameter.Text) <> '' then
  begin
    tempstrlist.Add('');
    tempstrlist.Add('【参数】');
    for I := 0 to dbmparameter.Lines.Count do
      tempstrlist.Add(dbmparameter.Lines[I]);
  end;
  mmShowdata.lines := tempstrlist;
  tempstrlist.free;
end;

procedure TApiModuleForm.loaddata;
var I: integer;
begin
  daoqApi.Open;
  lbShowname.Items.Clear;
  daoqApi.First;
  for I := 0 to 60 do
  begin
    if (I < 60) and (not daoqApi.Eof) then
      lbShowname.Items.Add(daoqApi.FieldByName('函数').asstring);
    daoqApi.Next;
  end;
end;

procedure TApiModuleForm.FormCreate(Sender: TObject);
var
  FileName: string;
begin
  inherited;
  FileName := ExtractFilePath(Application.ExeName) + 'delphi.dll';
  if FileExists(FileName) then
  begin
    if daoqApi.Active = True then daoqApi.Active := False;
    daoqApi.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + FileName + ';Persist Security Info=False;jet OLEDB:Database Password=VB6STKIT.DLLsoftpb;';
    daoqApifunname.ConnectionString := daoqApi.ConnectionString;
    Timer1.Enabled := true;
  end
  else
    messagebox(handle, '数据库文件没找到!', 'Delphi函数工厂', 48);
end;

procedure TApiModuleForm.lbShownameClick(Sender: TObject);
begin
  inherited;
  edtSearch.Text := lbShowname.Items[lbShowname.ItemIndex];
  showdata(edtSearch.Text);
end;

procedure TApiModuleForm.edtSearchChange(Sender: TObject);
begin
  inherited;
  if edtSearch.Focused then
  begin
    daoqapi.Close;
    daoqapi.SQL.Clear;
    daoqapi.SQL.Add('select * from Apifun');
    if rgSearchtype.ItemIndex = 0 then
      daoqapi.SQL.Add('where 函数  like "' + edtSearch.Text + '%"')
    else
      daoqapi.SQL.Add('where 函数  like "%' + edtSearch.Text + '%"');
    daoqapi.SQL.Add('ORDER by  函数');
    daoqapi.Open;
    loaddata;
  end;
end;

procedure TApiModuleForm.rgSearchtypeClick(Sender: TObject);
begin
  inherited;
  edtSearch.SetFocus;
  edtSearchChange(nil);
end;

procedure TApiModuleForm.sbSearchClick(Sender: TObject);
begin
  inherited;
  if lbShowname.Items.Count > 0 then
  begin
    lbShowname.SetFocus;
    edtSearch.Text := lbShowname.Items[0];
    showdata(edtSearch.Text);
  end;
end;

procedure TApiModuleForm.edtSearchKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if key = #13 then
    sbSearchClick(nil);
end;

procedure TApiModuleForm.Timer1Timer(Sender: TObject);
begin
  inherited;
  loaddata();
  Timer1.Free;
end;

end.

⌨️ 快捷键说明

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