📄 pfm_query.pas
字号:
unit pfm_query;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, Buttons, pvar_lib,db,DBTables, ExtCtrls;
type
Tfm_query = class(TForm)
LView1: TListView;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
ComBox1: TComboBox;
ComBox2: TComboBox;
ComBox3: TComboBox;
ComBox4: TComboBox;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
Label5: TLabel;
procedure FormCreate(Sender: TObject);
procedure ComBox1Change(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ComBox3KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fm_query: Tfm_query;
implementation
{$R *.DFM}
procedure Tfm_query.FormCreate(Sender: TObject);
var
newCol:TListColumn;
i:integer;
begin
Lview1.ViewStyle:=vsReport;
newCol:=LView1.Columns.add;
newCol.caption:='字段';
newCol.width:=120;
newCol:=LView1.Columns.add;
newCol.caption:='操作符';
newCol.width:=80;
newCol:=LView1.Columns.add;
newCol.caption:='条件';
newCol.width:=200;
newCol:=LView1.Columns.add;
newCol.caption:='关系';
newcol.width:=lView1.Width-lview1.Columns[1].width-lview1.columns[2].width
-lview1.columns[0].width;
//初始化查询字段下拉表
for i:=0 to mFieldNum do
combox1.items.Add(mFieldcap[i]);
end;
procedure Tfm_query.ComBox1Change(Sender: TObject);
var
mI:integer;
J:integer;
begin
//根据查询的字段类型初始化查询操作符
combox2.Items.Clear;
mI:=comBox1.ItemIndex;
case mFieldType[mI] of
ftDateTime,ftsmallint,ftInteger,ftFloat:
for j:=0 to 5 do
begin
combox2.items.add(DTOp[J]);
end;
else
for j:=0 to 7 do
begin
combox2.items.add(strOp[J]);
end;
end;
end;
procedure Tfm_query.BitBtn1Click(Sender: TObject);
var
ListItem:TListItem;
begin
//加入查询条件
if combox1.text='' then
begin
showmessage('查询字段不能为空!');
exit;
end;
if combox2.text='' then
begin
showmessage('操作符不能为空!');
exit;
end;
if trim(combox3.text)='' then
begin
showmessage('查询条件不能为空!');
exit;
end;
ListItem:=LView1.items.add;
ListItem.Caption:=mFieldcap[combox1.Itemindex];
listitem.data:=@(mFieldname[combox1.Itemindex]);
//showmessage(string(listitem.data^));
LIstItem.SubItems.add(combox2.text);
if pos('LIKE',combox2.text)>0 then
begin
LIstItem.SubItems.add('''%' + combox3.text + '%''');
end
else
begin //根据类型设置查询条件。如果是字符串或日期类型,需加单引号
case mFieldType[combox1.Itemindex] of
ftsmallint,ftInteger,ftFloat:
begin
LIstItem.SubItems.add(combox3.text);
end;
else
begin
LIstItem.SubItems.add(''''+combox3.text+'''');
end;
end;
end;
LIstItem.SubItems.add(combox4.text);
end;
procedure Tfm_query.BitBtn2Click(Sender: TObject);
var
i:integer;
begin
i:=lview1.Selected.Index;
lview1.Items.Delete(i);
end;
procedure Tfm_query.BitBtn3Click(Sender: TObject);
begin
if application.MessageBox('是否要全部删除查询条件?','注意',MB_YESNO)=IDYES then
lview1.Items.Clear;
end;
procedure Tfm_query.BitBtn4Click(Sender: TObject);
var
mysql:string;
i:integer;
begin
if lview1.Items.count=0 then
begin
showmessage('先加入你的查询条件');
exit;
end;
for i:=0 to lview1.Items.Count-2 do
begin
mysql:=mysql+ string((lview1.Items.Item[i].data)^);
// mysql:=mysql+lview1.Items.item[i].subitems[0].text;
mysql:=mysql+' '+lview1.Items.item[i].SubItems.Strings[0];
mysql:=mysql+' '+lview1.Items.item[i].SubItems.strings[1];
if trim(lview1.Items.item[i].SubItems.strings[2])='' then
begin
mysql:=mysql+' ' + 'and' +' ';
end
else
mysql:=mysql+' ' + lview1.Items.item[i].SubItems.strings[2]+' ';
end;
i:=lview1.Items.count-1;
mysql:=mysql+ string((lview1.Items.Item[i].data)^);
mysql:=mysql+' '+lview1.Items.item[i].SubItems.strings[0];
mysql:=mysql+' '+lview1.Items.item[i].SubItems.strings[1];
sQuerySql:=mysql;
//showmessage(mysql);
ModalResult:=mrOK;
end;
procedure Tfm_query.BitBtn5Click(Sender: TObject);
begin
sQuerySql:='';
ModalResult:=mrCancel;
end;
procedure Tfm_query.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;
procedure Tfm_query.ComBox3KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
BitBtn1.Click;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -