📄 selvc.pas
字号:
unit selVC;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls, DBGridEh,
ComCtrls;
type
TdlgSelVC = class(TForm)
Panel2: TPanel;
dbGrid1: TDBGridEh;
cboType: TComboBox;
edtSch: TEdit;
cmdSch: TSpeedButton;
tvType: TTreeView;
Panel1: TPanel;
cmdExit: TSpeedButton;
cmdAdd: TSpeedButton;
cmdOk: TSpeedButton;
procedure cmdSchClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure dbGrid1KeyPress(Sender: TObject; var Key: Char);
procedure cmdOkClick(Sender: TObject);
procedure cmdExitClick(Sender: TObject);
procedure dbGrid1DblClick(Sender: TObject);
procedure edtSchKeyPress(Sender: TObject; var Key: Char);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure tvTypeClick(Sender: TObject);
private
{ Private declarations }
xSql,xOrderSql:string;
xParams1,xParams2:string;
node1,node2,node3,node4:TTreeNode;
Function GetXName:string;
Function GetXId:integer;
Function GetXId1:integer;
public
{ Public declarations }
property xId :integer read GetXId ;
property xId1 :integer read GetXId1 ;
property xName :string read GetXName ;
property NewSql:string read xSql write xSql;
property NewOrderSql:string read xOrderSql write xOrderSql;
property sParams1:string write xParams1;
property sParams2:string write xParams2;
end;
var
dlgSelVC: TdlgSelVC;
implementation
uses datamodule1, unitmb;
{$R *.DFM}
Function TdlgSelVC.GetXname:string;
begin
result:=trim(dataE2.queryDlg.fieldbyname('Name').asstring);
end;
Function TdlgSelVC.GetXid:integer;
begin
result:=dataE2.queryDlg.fieldbyname('id').asinteger;
end;
Function TdlgSelVC.GetXid1:integer;
begin
result:=dataE2.queryDlg.fieldbyname('cusFileid').asinteger;
end;
procedure TdlgSelVC.FormShow(Sender: TObject);
var
sText:string;
n:integer;
begin
if tvType.Visible then
self.Width:=537
else self.Width:=537-tvType.Width;
//repaint;
if edtSch.Text<>'' then exit;
cboType.itemindex:=0;
with dataE2 do
begin
QueryDlg.close;
sText:=trim(queryDlg.sql.text) ;//sql未变,不必重新初始化
if (sText<>xSql) then
begin
queryDlg.sql.clear;
queryDlg.sql.add(xSql+xOrderSql);
end;
n:=pos(':',xSql);
if n>0 then //有参数
queryDlg.Parameters[0].value:=xParams1;
QueryDlg.open;
end;
with dataE2.qryType1 do
begin
close;
SQL.clear;
SQL.add('select * from area order by AREAID');
open;
first;
tvType.Items.Clear;
node1:=tvType.Items.Add(nil,'区域');
while not Eof do
begin
node2:=tvType.Items.AddChild(node1,dataE2.qryType1.FieldValues['name']);
Next;
end;
end;
if node2 <> nil then
node2.Selected:=true;
end;
procedure TdlgSelVC.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then modalResult:=mrok;
end;
procedure TdlgSelVC.cmdSchClick(Sender: TObject);
var
sText,s:string;
n:integer;
begin
with dataE2 do
begin
QueryDlg.close;
sText:=trim(queryDlg.sql.text) ;//sql未变,不必重新初始化
if cboType.ItemIndex=0 then
s:=xSql+xParams1+xOrderSql
else
s:=xSql+xParams2+xOrderSql;
if (s<>sText) then
begin
queryDlg.sql.clear;
queryDlg.sql.add(s);
end;
n:=pos(':',s);
if n>0 then //有参数
queryDlg.Parameters[0].value:='%'+edtSch.text+'%';
QueryDlg.open;
end;
end;
procedure TdlgSelVC.cmdOkClick(Sender: TObject);
begin
modalResult:=mrok;
end;
procedure TdlgSelVC.cmdExitClick(Sender: TObject);
begin
modalResult:=mrcancel;
end;
procedure TdlgSelVC.dbGrid1DblClick(Sender: TObject);
begin
modalResult:=mrok;
end;
procedure TdlgSelVC.edtSchKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
cmdSch.Click;
if Not dataE2.queryDlg.Eof then
dbGrid1.SetFocus;
end;
end;
procedure TdlgSelVC.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #27 then
modalResult:=mrcancel;
end;
procedure TdlgSelVC.tvTypeClick(Sender: TObject);
var
iAREAID:Integer;
begin
if tvType.Visible then
begin
iAREAID:=-1;
with dataE2.qryGet do
begin
close;
sql.clear;
sql.add('select * from area where name=:name order by AREAID');
Parameters[0].Value:=tvType.Selected.Text;
open;
iAREAID:=FieldByName('AREAID').AsInteger;
end;
with dataE2.queryDlg do
begin
close;
sql.clear;
if tvType.Selected.Text='区域' then
sql.add(xSql+xOrderSql)
else
sql.add(xSql+'Where AREAID=:AREAID'+xOrderSql);
if iAREAID>0 then
Parameters[0].Value:=iAREAID;
open;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -