📄 showgrid.pas
字号:
unit ShowGrid;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, ExtCtrls, StdCtrls,ADODB,DB,DBCtrls, jpeg, Mask,
Buttons,Theme;
type
TFrm_ShowGrid = class(TBaseForm)
DBGrid1: TDBGrid;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Notebook1: TNotebook;
DBEdit1: TDBEdit;
SpeedButton1: TSpeedButton;
procedure FormShow(Sender: TObject);
procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Panel2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Panel2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Panel2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure DBGrid1DblClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure DBEdit1Change(Sender: TObject);
procedure DBEdit1KeyPress(Sender: TObject; var Key: Char);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
private
Old,New:TPoint;
IsSize,IsFirst:Boolean;
OldRect,NewRect,Rect:TRect;
deskcanvas:TCanvas;
EDS,GDS:TDataSource;
{ Private declarations }
procedure MyMouseDown;
procedure MyMouseMove(Operator:string);
procedure MyMouseUp;
public
{ Public declarations }
SCreenP:TPoint;
Text:string;
FieldKey:string;
procedure SetData(var EditDS:TDataSource; var LookDS:TDataSource);
end;
var
Frm_ShowGrid: TFrm_ShowGrid;
implementation
{$R *.dfm}
{ TFrm_ShowGrid }
procedure TFrm_ShowGrid.MyMouseDown;
begin
OldRect:=DBGrid1.ClientRect;{GetClientRect;}
Old.X:=OldRect.Left;
Old.Y:=OldRect.Top;
Old:=ClientToScreen(Old);
OldRect.Left:=Old.X;
OldRect.Top:=Old.Y;
Old.X:=OldRect.Right;
Old.Y:=OldRect.Bottom;
Old:=ClientToScreen(Old);
OldRect.Right:=Old.X;
OldRect.Bottom:=Old.Y;
Rect:=OldRect;
IsSize:=True;
IsFirst:=True;
end;
procedure TFrm_ShowGrid.MyMouseMove(Operator: string);
begin
if IsSize then
begin
GetCursorPos(New);
NewRect.Left:=OldRect.Left;
NewRect.Top:=OldRect.Top;
if Operator = 'H' then
begin
NewRect.Right:=New.X;
NewRect.Bottom:=OldRect.Bottom;
end else if Operator = 'V' then
begin
NewRect.Right:=OldRect.Right;
NewRect.Bottom:=New.Y;
end else if Operator = 'B' then
begin
NewRect.Right:=New.X;
NewRect.Bottom:=New.Y;
end;
deskcanvas:=TCanvas.Create;
deskcanvas.Handle:=GetDC(0);
with deskcanvas do
begin
Pen.Width:=1;
Pen.Style:=psSolid;
if not IsFirst then
//DrawFocusRect(OldRect)
else
IsFirst:=False;
//DrawFocusRect(NewRect);
OldRect:=NewRect;
end;
deskcanvas.Free;
end;
end;
procedure TFrm_ShowGrid.MyMouseUp;
begin
DBGrid1.Width:=DBGrid1.Width+(NewRect.Right-Rect.Right);
DBGrid1.Height:=DBGrid1.Height+(NewRect.Bottom-Rect.Bottom);
IsSize:=False;
Refresh;
end;
procedure TFrm_ShowGrid.FormShow(Sender: TObject);
begin
DBEdit1.DataSource:=EDS;
DBGrid1.DataSource:=GDS;
DBEdit1.DataField:=FieldKey;
Self.Top:=Screenp.Y;
Self.Left:=SCreenP.X;
DBEdit1.SetFocus;
DBEdit1.Text:=Text;
end;
procedure TFrm_ShowGrid.Panel1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
MyMouseDown;
end;
procedure TFrm_ShowGrid.Panel1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
MyMouseMove('H');
end;
procedure TFrm_ShowGrid.Panel1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
MyMouseUp;
end;
procedure TFrm_ShowGrid.Panel2MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
MyMouseDown;
end;
procedure TFrm_ShowGrid.Panel2MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
MyMouseMove('V');
end;
procedure TFrm_ShowGrid.Panel2MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
MyMouseUp;
end;
procedure TFrm_ShowGrid.DBGrid1DblClick(Sender: TObject);
begin
DBEdit1.Text:=GDS.DataSet.FieldByName(FieldKey).AsString;
Self.Close;
end;
procedure TFrm_ShowGrid.SetData(var EditDS, LookDS: TDataSource);
begin
EDS:=EditDS;
GDS:=LookDS;
end;
procedure TFrm_ShowGrid.SpeedButton1Click(Sender: TObject);
begin
DBEdit1.Text:=GDS.DataSet.FieldByName(FieldKey).AsString;
Self.Close;
end;
procedure TFrm_ShowGrid.DBEdit1Change(Sender: TObject);
begin
DBEdit1.SelStart:=Length(DBEdit1.Text);
GDS.DataSet.Locate(FieldKey,DBEdit1.Text,[loPartialKey]);
end;
procedure TFrm_ShowGrid.DBEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
DBGrid1.SelectedField.FocusControl;
DBEdit1.Text:=GDS.DataSet.FieldByName(FieldKey).AsString;
end;
end;
procedure TFrm_ShowGrid.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
DBEdit1.Text:=GDS.DataSet.FieldByName(FieldKey).AsString;
Close;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -