📄 ufind.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 + -