unit MainFrm;interface
uses
Windows, SysUtils,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);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
FPageNo: Integer;
procedure SetPageNo(Value: Integer);
public
property PageNo: Integer read FPageNo write SetPageNo;
end;var
frmMain: TfrmMain;
procedure LoadForm(Handle: THandle; AppName: ShortString); export;implementation{$R *.dfm}const
PAGE_SIZE = 6;
//procedure LoadForm;procedure LoadForm(Handle: THandle; AppName: ShortString);
begin
Application.Handle := Handle;
Application.Name := AppName;
frmMain := TfrmMain.Create(Application);
try
frmMain.ShowModal;
finally
frmMain.Free;
end;
end;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;procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
self.Free;
end;end.initialization
CoInitialize(nil);
finalization
CoUnInitialize;
uses
Windows, SysUtils,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);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
FPageNo: Integer;
procedure SetPageNo(Value: Integer);
public
property PageNo: Integer read FPageNo write SetPageNo;
end;var
frmMain: TfrmMain;
procedure LoadForm(Handle: THandle; AppName: ShortString); export;implementation{$R *.dfm}const
PAGE_SIZE = 6;
//procedure LoadForm;procedure LoadForm(Handle: THandle; AppName: ShortString);
begin
Application.Handle := Handle;
Application.Name := AppName;
frmMain := TfrmMain.Create(Application);
try
frmMain.ShowModal;
finally
frmMain.Free;
end;
end;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;procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
self.Free;
end;end.initialization
CoInitialize(nil);
finalization
CoUnInitialize;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货