📄 search.pas
字号:
unit search;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls,ADODB, CheckLst,dateutils;
type
TForm_search = class(TForm)
PageControl1: TPageControl;
TabSheet2: TTabSheet;
Panel1: TPanel;
btn_ok: TButton;
btn_cancel: TButton;
TreeView_search: TTreeView;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
Label7: TLabel;
Label3: TLabel;
combo_operator: TComboBox;
Label5: TLabel;
Combo_rel: TComboBox;
btn_setup: TButton;
byn_delete: TButton;
btn_moresearch: TButton;
Panel2: TPanel;
Label1: TLabel;
Splitter1: TSplitter;
list_fields: TCheckListBox;
edit_value: TComboBox;
procedure FormShow(Sender: TObject);
procedure btn_setupClick(Sender: TObject);
procedure byn_deleteClick(Sender: TObject);
procedure btn_okClick(Sender: TObject);
procedure List_fieldsClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btn_cancelClick(Sender: TObject);
procedure btn_moresearchClick(Sender: TObject);
procedure btn_deleteClick(Sender: TObject);
procedure btn_addClick(Sender: TObject);
procedure list_fieldsClickCheck(Sender: TObject);
private
{ Private declarations }
procedure HideColumn(i:integer;ifShow:boolean);
procedure AddOperator(FieldType:string);
function GetQueryStr() :string;
function GenerateSql(tempNode:Ttreenode):string;
function GetRelation(tempStr:String):string;
function GetRelation2(tempStr:String):string;
function GetOneSql(tempStr:String):string;
function DealSearchText(tempStr:string):string;
procedure AddValues(FieldName:string);
public
{ Public declarations }
TransADO: TADOQuery;
end;
var
Form_search: TForm_search;
myNode:Ttreenode;
myChildNode:Ttreenode;
implementation
uses wxp_dm, Unit_wxp, partinfo, partout, partorder, partin, partsell,
machinetest, maintain, z_machine_in, z_machine_out, contract_order,
contract_cjd, contract_cjd_ys, contract_tract, transit_proxy, contract,
Unit_hkhs, Unit_cjqk, Unit_thqk, Unit_cjyfk;
{$R *.dfm}
procedure TForm_search.FormShow(Sender: TObject);
var
i:integer;
begin
//向list_fields控件中增加字段
//TransADO.Open ;
for i:=0 to TransADO.FieldList.Count-1 do
begin
list_fields.Items.Add (TransADO.Fields[i].FieldName );
//将每个字段的字段类型放在数组中
unit_wxp.FieldType[i]:= TransADO.Fields[i].DataType;
end;
//向树型控件中增加跟节点
with treeview_search.Items do
begin
myNode:=add(nil,'以下为查询条件');
//myChildNode:=addchild(myNode,'hello');
end;
//向list_delete中增加上一次过滤的字段
//if unit_wxp.FilterArray >0 then
//begin
for i:=0 to list_fields.Items.Count -1 do
list_fields.checked[i]:=unit_wxp.FilterArray[i];
//end;
//list_fields.Items
end;
procedure TForm_search.btn_setupClick(Sender: TObject);
var
TempString:string;
tempNode: Ttreenode;
NodeString:string;
begin
if edit_value.Text='' then
begin
ShowMessage('请输入查询条件');
exit;
end
else if list_fields.ItemIndex <0 then
showmessage('请选择一个字段')
else
begin
with treeview_search do
begin
if selected=nil then
tempNode:=myNode
else
tempNode:=selected;
NodeString:=list_fields.Items.Strings[list_fields.itemindex]+
unit_wxp.GetOperator(combo_operator.Text )+DealSearchText(edit_value.Text)
+'('+unit_wxp.GetRelation(combo_rel.Text )+')';
if (copy(tempNode.text,1,6)='子条件') or (tempNode=myNode) then
myChildNode:=Items.addchild(tempNode,NodeString)
else
begin
tempNode:=tempNode.Parent ;
myChildNode:=Items.addchild(tempNode,NodeString);
end;
end;
end;
treeview_search.FullExpand ;
end;
procedure TForm_search.byn_deleteClick(Sender: TObject);
begin
//with treeview_search do
//begin
if treeview_search.Selected =nil then
showmessage('请选择删除结点')
else if treeview_search.Selected =myNode then
showmessage('根结点不能删除')
else
treeview_search.Items.Delete(treeview_search.Selected );
//items.Delete(itemindex)
//end;
end;
procedure TForm_search.btn_okClick(Sender: TObject);
var
i:integer;
tempStr:string;
begin
//根据查询语句重新建立查询
//查询以前先关闭连接然后打开连接
tempStr:= GetQueryStr;
//showmessage(tempStr);
if trim(tempStr)<>'' then
//showmessage(GetQueryStr);
begin
unit_wxp.FinalSql := tempStr;
with TransADO do
begin
Close ;
SQL.Clear ;
SQL.Add(tempStr);
Open ;
end ;
end;
close;
end;
procedure TForm_search.List_fieldsClick(Sender: TObject);
begin
edit_value.SetFocus ;
AddOperator(unit_wxp.GetFieldType(list_fields.ItemIndex ) );
AddValues(list_fields.Items.Strings[list_fields.ItemIndex]);
//showmessage(inttostr(list_fields.ItemIndex));
end;
procedure TForm_search.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
action:=cafree;
end;
procedure TForm_search.btn_cancelClick(Sender: TObject);
begin
close;
end;
//添加子条件
procedure TForm_search.btn_moresearchClick(Sender: TObject);
var
tempNode:Ttreenode;
begin
with treeview_search do
begin
if Selected=nil then
tempNode:=myNode
else
tempNode:=selected;
if (copy(tempNode.text,1,6)<>'子条件') and (tempNode<>myNode) then
begin
myChildNode:=items.AddChild(tempNode,tempNode.Text );
tempnode.Text :='子条件('+unit_wxp.GetRelation(combo_rel.Text )+')';
end
else
tempNode:=items.addChild(tempNode,'子条件('+unit_wxp.GetRelation(combo_rel.Text )+')');
end;
treeview_search.FullExpand ;
end;
//增加过滤字段事件
procedure TForm_search.btn_deleteClick(Sender: TObject);
var
tempIndex:integer;
begin
{ if list_fields.ItemIndex <0 then
begin
showmessage('请选择一个过滤字段');
exit;
end;
tempIndex:=list_delete.Items.IndexOf(list_fields.Items.Strings[list_fields.itemindex]);
if tempIndex<0 then
begin
list_delete.Items.Add (list_fields.Items.Strings[list_fields.itemindex]);
//form_partinfo.DBGrid1.Columns.Items[list_fields.itemindex].Visible :=false;
end
else
showmessage('已经过滤了该字段'); }
end;
//恢复过滤字段
procedure TForm_search.btn_addClick(Sender: TObject);
var
tempIndex:integer;
begin
{ if list_delete.ItemIndex <0 then
showmessage('请选择恢复字段')
else
begin
tempIndex:=list_fields.Items.IndexOf(list_delete.Items.Strings[list_delete.ItemIndex]);
list_delete.DeleteSelected ;
form_partinfo.DBGrid1.Columns[tempIndex].Visible :=true;
end; }
end;
//自定义函数过程
/////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -