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

📄 basehandlesearch.pas

📁 用delphi编写的数据库管理软件
💻 PAS
字号:
unit BaseHandleSearch;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Base_Dll, Grids, DBGridEh, ExtCtrls, StdCtrls, DB, DBClient;

const
  WM_USER_SETFOOTER = WM_USER+8028;

type
  TfrmHandleSearch = class(TfrmBase_DLL)
    GroupBox1: TGroupBox;
    Panel1: TPanel;
    Grid: TDBGridEh;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Button2: TButton;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    CDSBaseinfo: TClientDataSet;
    DSBaseinfo: TDataSource;
    procedure GridGetCellParams(Sender: TObject; Column: TColumnEh;
      AFont: TFont; var Background: TColor; State: TGridDrawState);
    procedure Button2Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure GridTitleBtnClick(Sender: TObject; ACol: Integer;
      Column: TColumnEh);
    procedure Button1Click(Sender: TObject);
    procedure GridDblClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    function GetGridTitle(TableName:String):Boolean;
    procedure setfooter(var setfooter:Tmessage);Message WM_USER_SETFOOTER;     
    { Private declarations }
  Protected
    SearchTable:String;
    TiaoField1,TiaoField2,TiaoField3:string;
    KeyField:String;
  public
    { Public declarations }
  end;

var
  frmHandleSearch: TfrmHandleSearch;

implementation

uses Global, DataProcess;

{$R *.dfm}

procedure TfrmHandleSearch.GridGetCellParams(Sender: TObject;
  Column: TColumnEh; AFont: TFont; var Background: TColor;
  State: TGridDrawState);
begin
  inherited;
  if grid.SumList.RecNo mod 2=1 then
    BackGround:=$00EAEFED
    else
    BackGround:=clWhite;
end;

procedure TfrmHandleSearch.Button2Click(Sender: TObject);
begin
  inherited;
  SearchReturnID:=0;
  SearchTiao:='';
  Close;
end;

procedure TfrmHandleSearch.FormDestroy(Sender: TObject);
begin
  inherited;
  frmHandleSearch:=nil;
end;

procedure TfrmHandleSearch.GridTitleBtnClick(Sender: TObject;
  ACol: Integer; Column: TColumnEh);
var
  sortstring:string;
begin
  inherited;
  with Column do
  begin
    if FieldName = '' then
      Exit;
    case Title.SortMarker of
      smNoneEh:
      begin
        Title.SortMarker := smDownEh;
        sortstring := Column.FieldName + ' ASC';
      end;
      smDownEh: sortstring := Column.FieldName + ' ASC';
      smUpEh: sortstring := Column.FieldName + ' DESC';
    end;

    try
      CDSBaseinfo.IndexFieldNames:= sortstring
    except
    end;
  end;
end;

procedure TfrmHandleSearch.Button1Click(Sender: TObject);
var
  sFilter:String;
begin
  inherited;
SearchTiao:='';
SearchReturnID:=0;
sFilter:='';
if edit1.Text <> '' then
  if sFilter='' then
   sFilter:= TiaoField1 +' like '+Vartosql('%'+Trim(edit1.text)+'%')
   else
  sFilter:= sFilter+' and '+TiaoField1+' like '+Vartosql('%'+Trim(edit1.text)+'%');

if edit2.Text <> '' then
  if sFilter='' then
   sFilter:=TiaoField2+' like '+Vartosql('%'+Trim(edit2.text)+'%')
   else
   sFilter:= sFilter+' and '+TiaoField2+' like '+Vartosql('%'+Trim(edit2.text)+'%');

if edit3.Text <> '' then
  if sFilter='' then
   sFilter:=TiaoField3+' like '+Vartosql('%'+Trim(edit3.text)+'%')
   else
   sFilter:= sFilter+' and '+TiaoField3+' like '+Vartosql('%'+Trim(edit3.text)+'%');

if sFilter<>'' then
  Searchtiao:=sFilter
  else
  Searchtiao:=' fid>0 ';

  try

    GetSqlData(CDSBaseinfo,SearchTable,KeyField,Searchtiao,20);
    GetGridTitle(SearchTable);
    postmessage(handle,WM_USER_SETFOOTER,0,0);
  Except
    on E:Exception do
      begin
        messagedlg('查找失败 ! 错误原因 : '+#10#13+E.Message,mtWarning,[mbok],0);
        Exit;
      end;
  end;

end;

function TfrmHandleSearch.GetGridTitle(TableName: String): Boolean;
var
  i:integer;
  TMPCDS:TclientDataset;
begin
Result:=True;
if TableName='' then
    Exit;
  try
    CDSbaseinfo.DisableControls;
    TMPCDS:=Tclientdataset.Create(nil);
    TMPCDS.FetchOnDemand:=False;
    GetsqlData(TMPCDS,'TTablefield','fid','ftableName='+vartosql(TableName),20);
    if TMPCDS.RecordCount > 0 then
      begin
        for i:=0 to CDSBaseinfo.Fields.Count - 1 do
          begin
           TMPCDS.First;
            while not TMPCDS.Eof do
              begin
                if UpperCase(CDSbaseinfo.fields[i].FieldName)=UpperCase(TMPCDS.FieldByName('fname').AsString) then
                  begin
                    CDSbaseinfo.Fields[i].DisplayLabel:=TMPCDS.fieldbyname('fdesc').AsString;
                    if (TMPCDS.FieldByName('ftype').AsString='int') or
                        (TMPCDS.FieldByName('ftype').AsString='bit') or
                        (TMPCDS.FieldByName('ftype').AsString='datetime') or
                        (TMPCDS.FieldByName('ftype').AsString='numeric') then
                        CDSbaseinfo.Fields[i].DisplayWidth := 12
                        else
                        CDSbaseinfo.Fields[i].DisplayWidth:=Trunc(TMPCDS.fieldbyname('flength').AsInteger/1.5);
                    if not TMPCDS.FieldByName('fisVisible').AsBoolean then
                      begin
                        CDSbaseinfo.Fields[i].Visible:=False;
                      end;
                  end;
                TMPCDS.Next;
              end;
            CDSBaseinfo.Next;
          end;
      end;
  finally
    TMPCDS.Close;
    TMPCDS.Free;
    CDSbaseinfo.EnableControls; 
  end;
end;

procedure TfrmHandleSearch.GridDblClick(Sender: TObject);
begin
  inherited;
  if not CDSBaseinfo.Active then
    Exit;
  if CDSBaseinfo.RecordCount > 0 then
    begin
      SearchReturnID:=CDSBaseinfo.Fieldbyname(KeyField).AsInteger;
      Self.Close; 
    end;
end;

procedure TfrmHandleSearch.setfooter(var setfooter: Tmessage);
var
  i,j:integer;
begin
  i:=Grid.Columns.Count;
  if i>0 then
    begin
      for j:=0 to i-1 do
        begin
          Grid.Columns[j].Footer.ValueType:=fvtStaticText;
          Grid.Columns[j].Footer.Value:='合计';
          Grid.Columns[j+1].Footer.ValueType:=fvtCount;
          break;
        end;
    end;
  application.ProcessMessages;
end;

procedure TfrmHandleSearch.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  Grid.SumList.Active:=False; 
end;

end.

⌨️ 快捷键说明

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