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

📄 ufind.pas

📁 天涯進銷存系統
💻 PAS
字号:
unit uFind;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  SimpleDS, DB, DBClient, StdCtrls, LBCtrls, CheckLst, Grids, LBDBGrid,
  ExtCtrls, jpeg, LBDBScrollBar, LBMorphVCLBase,
  LBMorphButton;

type
  TfrmFind = class(TForm)
    FindDataCds: TClientDataSet;
    Label5: TLabel;
    Panel6: TPanel;
    QEdit: TLBEdit;
    Image2: TImage;
    WindowCaption: TLabel;
    SysCloseButton: TLBMorphButton;
    Panel1: TPanel;
    Panel5: TPanel;
    Panel7: TPanel;
    Panel9: TPanel;
    LBDBGrid1: TLBDBGrid;
    Shape1: TShape;
    LBDBScrollBar1: TLBDBScrollBar;
    lbYsf: TLBComboBox;
    SelectButton: TLBButton;
    DeleteButton: TLBButton;
    ClearButton: TLBButton;
    Shape2: TShape;
    Panel2: TPanel;
    lbAnd: TCheckListBox;
    FindButton: TLBSpeecButton;
    procedure FormShow(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FindDataAfterScroll(DataSet: TDataSet);
    procedure FindButtonClick(Sender: TObject);
    procedure QEditKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure SelectButtonClick(Sender: TObject);
    procedure DeleteButtonClick(Sender: TObject);
    procedure ClearButtonClick(Sender: TObject);
    procedure ClientDBKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure SysCloseButtonClick(Sender: TObject);
    procedure Image2MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
    function GetFieldName(CNName: string) :string;
    procedure GetYSF;
  public
    { Public declarations }
  end;

var
  frmFind: TfrmFind;
  sSqlText,sResult, vResult:string;
  slSqlList: TStringList;
  isFDateTime :Boolean;

implementation

uses  uPublicvar, uDataMo, uConst;

{$R *.dfm}

function TfrmFind.GetFieldName(CNName: string) :string;
begin
  if FindDataCds.Locate('CNNAME', CNName, [loCaseInsensitive]) then
    Result:=Trim(FindDataCds.Fieldbyname('FIELDNAME').AsString);
end;

procedure TfrmFind.GetYSF;
begin
  case lbYsf.ItemIndex of
  0:
    begin
      sResult := 'like';
      vResult := '包含';
    end;  
  1:
    begin
      sResult := '=';
      vResult := '等于';
    end;
  2:
    begin
      sResult := '>';
      vResult := '大于';
    end;
  3:
    begin
      sResult := '<';
      vResult := '小于';
    end;
  4:
    begin
      sResult := '<=';
      vResult := '小于或等于';
    end;
  5:
    begin
      sResult := '>=';
      vResult := '大于或等于';
    end;
  6:
    begin
      sResult := '<>';
      vResult := '不等于';
    end;
  end;
end;

procedure TfrmFind.FormShow(Sender: TObject);
begin
  Caption:=FindCaption;
  OpenData('select CNNAME, FIELDNAME From TABLEINDEX WHERE TABLENAME='+#39+FindTable+#39+'Order By INDEXNO',
           dmData.sdsFind);
  FindDataCds.Data:=dmData.sdsFind.Data;
  lbYsf.ItemIndex:=0; 
end;

procedure TfrmFind.FormDestroy(Sender: TObject);
begin
  sSqlText:='';
  slSqlList.Free;
  dmData.sdsFind.Close;
  FindDataCds.Data:=Null;
end;

procedure TfrmFind.FormCreate(Sender: TObject);
begin
  slSqlList:=TStringList.Create();
end;

procedure TfrmFind.FindDataAfterScroll(DataSet: TDataSet);
begin
  QEdit.Visible:=True;
  isFDateTime:=False;
end;

procedure TfrmFind.FindButtonClick(Sender: TObject);
var
  i:integer;
begin
  if FindValue<>'' then sSqlText:=FindValue;
  for i:=0 to  lbAnd.Items.Count-1 do
  begin
    if lbAnd.Checked[i] then
    begin
      if sSqlText<>'' then
        sSqlText:=sSqlText+' and '+slSqlList[i]
      else
        sSqlText:=' where '+slSqlList[i];
    end;
  end;
  sSqlText:='select * From '+FindTable+' '+sSqlText;
  OpenData(sSqlText, FindCds);
  lbAnd.Clear;
  Close;
end;

procedure TfrmFind.QEditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=13 then SelectButtonClick(Sender);
end;

procedure TfrmFind.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=27 then Close;
  if key=VK_F3 then   FindButtonClick(Sender);
end;

procedure TfrmFind.SelectButtonClick(Sender: TObject);
var
  CHFieldName:string;
begin
  if Trim(QEdit.Text)='' then
  begin
    Application.MessageBox('请先输入要查询的条件。',Hintinfo,$30);
    QEdit.SetFocus;
    Exit;
  end;
  GetYSF;
  CHFieldName:=dmData.sdsFind.Fieldbyname('CNNAME').asstring;
  lbAnd.Items.Add(Trim(CHFieldName)+' '+vResult+' '+Trim(QEdit.Text));
  if sResult='like' then
     slSqlList.Add(GetFieldName(Trim(CHFieldName))+' '+sResult+' '+QuotedStr('%'+Trim(QEdit.Text)+'%'))
  else
     slSqlList.Add(GetFieldName(Trim(CHFieldName))+' '+sResult+' '+QuotedStr(Trim(QEdit.Text)));
  lbAnd.Checked[lbAnd.Items.Count-1]:=True;
  QEdit.Clear;
end;

procedure TfrmFind.DeleteButtonClick(Sender: TObject);
var
  DelIx: integer;
begin
  if lbAnd.ItemIndex<0 then
  begin
    Application.MessageBox('请先选择要删除的查询条件。',Hintinfo,$30);
    Exit;
  end;
  if Application.MessageBox('确定要删除当前所选择的查询条件吗?',Hintinfo,$24)=idYes then
  begin
    Delix:=lbAnd.ItemIndex;
    lbAnd.DeleteSelected;
    slSqlList.Delete(Delix);
  end;
end;

procedure TfrmFind.ClearButtonClick(Sender: TObject);
begin
  lbAnd.Items.Clear;
  sSqlText := '';
  slSqlList.Clear;
end;

procedure TfrmFind.ClientDBKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=13 then QEdit.SetFocus;
end;

procedure TfrmFind.SysCloseButtonClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmFind.Image2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  SendMessage(Handle, wm_SysCommand ,$F012, 0);
end;

end.



⌨️ 快捷键说明

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