📄 mainfrm.pas
字号:
unit MainFrm;
interface
uses
Classes, Controls, Forms, Grids, ToolWin, ComCtrls, StdCtrls, ExtCtrls, DB,
ADODB;
type
TfrmMain = class(TForm)
cnn: TADOConnection;
rst: TADODataSet;
pnlNavigate: TPanel;
btnFirst: TButton;
btnPrior: TButton;
btnNext: TButton;
btnLast: TButton;
edtPageNO: TEdit;
sgData: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure btnFirstClick(Sender: TObject);
procedure edtPageNOKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
private
FPageNo: Integer;
procedure SetPageNo(Value: Integer);
public
property PageNo: Integer read FPageNo write SetPageNo;
end;
var
frmMain: TfrmMain;
implementation
uses
Windows, SysUtils;
{$R *.dfm}
const
PAGE_SIZE = 6;
procedure TfrmMain.FormCreate(Sender: TObject);
var
i: Integer;
begin
SetWindowLong(edtPageNO.Handle, GWL_STYLE, GetWindowLong(edtPageNo.Handle,
GWL_STYLE) or ES_CENTER or ES_NUMBER);
rst.Active := True;
rst.Recordset.PageSize := PAGE_SIZE;
sgData.ColCount := rst.FieldCount + 1;
for i := 0 to rst.FieldCount - 1 do
begin
sgData.ColWidths[i + 1] := rst.Fields[i].DisplayWidth * Canvas.TextWidth('0');
sgData.Cells[i + 1, 0] := rst.Fields[i].DisplayName;
end;
sgData.Cells[0, 0] := '序号';
PageNo := 1;
end;
procedure TfrmMain.btnFirstClick(Sender: TObject);
begin
if Sender = btnFirst then
PageNo := 1
else if Sender = btnPrior then
PageNo := PageNo - 1
else if Sender = btnNext then
PageNo := PageNo + 1
else PageNo := rst.Recordset.PageCount;
end;
procedure TfrmMain.edtPageNOKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if edtPageNO.Text <> '' then
PageNo := StrToInt(edtPageNO.Text);
end;
procedure TfrmMain.SetPageNo(Value: Integer);
const
adStateOpen = $00000001;
var
n, i, j: Integer;
begin
with rst.Recordset do
if (FPageNo <> Value) and (Value >= 1) and (Value <= PageCount) and
(State = adStateOpen) then
begin
FPageNo := Value;
AbsolutePage := FPageNo;
n := (FPageNo - 1) * PAGE_SIZE;
edtPageNo.Text := IntToStr(FPageNo);
for i := 1 to PAGE_SIZE do
begin
sgData.RowCount := i + 1;
sgData.Cells[0, i] := IntToStr(n + i);
for j := 0 to Fields.Count - 1 do
sgData.Cells[j + 1, i] := Fields[j].Value;
MoveNext;
if Eof then Exit;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -