📄 ufrmfiltersqlq.pas
字号:
{*******************************************************************************
* 易线路 的建议 K3 系统
*******************************************************************************}
unit uFrmFilterSQLQ;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls, Db, DBClient;
type
TFrmFilterSQLQ = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
BtnSure: TBitBtn;
BtnCancel: TBitBtn;
EdtFind: TEdit;
Label1: TLabel;
Bevel2: TBevel;
Panel3: TPanel;
Lbox: TListBox;
CDSA: TClientDataSet;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BtnSureClick(Sender: TObject);
procedure BtnCancelClick(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure LboxDblClick(Sender: TObject);
procedure LboxKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure LboxClick(Sender: TObject);
procedure EdtFindKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
sCurStr,sCurField,sCurSQL:String;
Procedure PFillListBox();
Procedure PReturn();
{ Public declarations }
end;
var
FrmFilterSQLQ: TFrmFilterSQLQ;
implementation
uses uDM,uFuntionSys, uFrmFilterSQL;
{$R *.DFM}
procedure TFrmFilterSQLQ.FormShow(Sender: TObject);
begin
ReadINIForm(Self);
end;
procedure TFrmFilterSQLQ.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
SaveINIForm(Self);
Action:=caFree;
FrmFilterSQLQ:=nil;
end;
procedure TFrmFilterSQLQ.BtnSureClick(Sender: TObject);
begin
PReturn();
end;
procedure TFrmFilterSQLQ.BtnCancelClick(Sender: TObject);
begin
Close;
end;
{ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
* 从数据库中提取数据 填充列表筐
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo}
procedure TFrmFilterSQLQ.PFillListBox;
var
sSQL,Str:String;
begin
sSQL:='Select Distinct '+sCurField
+' From ('+sCurSQL+') T';
if not FCarryOutSQL(CDSA,sSQL,True,False) then Exit;
CDSA.First;Lbox.Items.Clear;
Str:=CDSA.Fields[0].FieldName;
while not CDSA.Eof do begin
sSQL:=Trim(CDSA.FieldByName(Str).AsString);
Lbox.Items.Add(sSQL);
CDSA.Next;
end;
EdtFind.Text:=sCurStr;
end;
procedure TFrmFilterSQLQ.FormResize(Sender: TObject);
begin
EdtFind.Width:=Panel1.Width-(271-214);
end;
procedure TFrmFilterSQLQ.LboxDblClick(Sender: TObject);
begin
EdtFind.Text:=Lbox.Items.Strings[Lbox.ItemIndex];
PReturn();
end;
procedure TFrmFilterSQLQ.LboxKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
EdtFind.Text:=Lbox.Items.Strings[Lbox.ItemIndex];
if Key = 13 then begin
PReturn();
end;
end;
procedure TFrmFilterSQLQ.PReturn;
begin
FrmFilterSQL.sTempSQL:=EdtFind.Text;
Close;
end;
procedure TFrmFilterSQLQ.LboxClick(Sender: TObject);
begin
EdtFind.Text:=Lbox.Items.Strings[Lbox.ItemIndex];
end;
procedure TFrmFilterSQLQ.EdtFindKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Str,sTxt:String;
begin
if (Key = VK_Down) or (Key = VK_Up) then Lbox.SetFocus;
if Key <> 13 then Exit;
CDSA.First;Lbox.Items.Clear;
Str:=CDSA.Fields[0].FieldName;
while not CDSA.Eof do begin
sTxt:=Trim(CDSA.FieldByName(Str).AsString);
if Pos(EdtFind.Text,sTxt) > 0 then Lbox.Items.Add(sTxt);
if Trim(EdtFind.Text) = '' then Lbox.Items.Add(sTxt);
CDSA.Next;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -