📄 select.pas
字号:
unit Select;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, Grids, DBGridEh, ExtCtrls, StdCtrls, Buttons,
ADODB;
type
TfrmSelect = class(TForm)
selectgrid: TDBGridEh;
dsselect: TDataSource;
Panel1: TPanel;
Panel2: TPanel;
btnExit: TSpeedButton;
qurselect: TADOQuery;
procedure selectgridKeyPress(Sender: TObject; var Key: Char);
procedure selectgridDblClick(Sender: TObject);
procedure btnExitClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
procedure AdjustDropDownForm(AControl : TControl; HostControl: TControl); //坐标
public
procedure CreateSelect(s:string;x,y:integer);
procedure ClickCreate(s:string; HostControl: TControl);
end;
var
frmSelect: TfrmSelect;
implementation
uses database;
{$R *.dfm}
procedure TfrmSelect.selectgridKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
frmselect.ModalResult:=mrok
else
frmselect.ModalResult:=mrCancel;
end;
procedure TfrmSelect.CreateSelect(s:string;x,y:integer);
var
i:integer;
begin
Left:=x;
top:=y;
qurselect.Close;
qurselect.SQL.Clear;
qurselect.SQL.Add(s);
qurselect.Open;
for i:=0 to 3 do
begin
if i<=qurselect.FieldCount-1 then
selectGrid.Columns[i].FieldName:= qurselect.Fields[i].FieldName;
end;
end;
procedure TfrmSelect.ClickCreate(s:string; HostControl: TControl);
var
i:integer;
begin
AdjustDropDownForm( self,HostControl);
qurselect.Close;
qurselect.SQL.Clear;
qurselect.SQL.Add(s);
qurselect.Open;
for i:=0 to 3 do
begin
if i<=qurselect.FieldCount-1 then
selectGrid.Columns[i].FieldName:= qurselect.Fields[i].FieldName;
end;
end;
procedure TfrmSelect.selectgridDblClick(Sender: TObject);
begin
sendmessage(selectgrid.Handle,WM_CHAR,VK_RETURN,0);
end;
procedure TfrmSelect.btnExitClick(Sender: TObject);
begin
frmselect.ModalResult:=mrCancel;
end;
procedure TfrmSelect.FormActivate(Sender: TObject);
begin
//nExit.Left := Round(selectgrid.Width/2-btnExit.Width/2);
end;
procedure TfrmSelect.AdjustDropDownForm(AControl, HostControl: TControl);
var
WorkArea: TRect;
HostP, PDelpta: TPoint;
begin
SystemParametersInfo(SPI_GETWORKAREA,0,@WorkArea,0);
HostP := HostControl.ClientToScreen(Point(0,0));
PDelpta := AControl.ClientToScreen(Point(0,0));
AControl.Left := HostP.x;
AControl.Top := HostP.y + HostControl.Height + 1;
if (AControl.Width > WorkArea.Right - WorkArea.Left) then
AControl.Width := WorkArea.Right - WorkArea.Left;
if (AControl.Left + AControl.Width > WorkArea.Right) then
AControl.Left := WorkArea.Right - AControl.Width;
if (AControl.Left < WorkArea.Left) then
AControl.Left := WorkArea.Left;
if (AControl.Top + AControl.Height > WorkArea.Bottom) then
begin
if (HostP.y - WorkArea.Top > WorkArea.Bottom - HostP.y - HostControl.Height) then
AControl.Top := HostP.y - AControl.Height;
end;
if (AControl.Top < WorkArea.Top) then
begin
AControl.Height := AControl.Height - (WorkArea.Top - AControl.Top);
AControl.Top := WorkArea.Top;
end;
if (AControl.Top + AControl.Height > WorkArea.Bottom) then
begin
AControl.Height := WorkArea.Bottom - AControl.Top;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -