?? mainform.pas
字號:
unit MainForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, ComObj, ActiveX, Menus, ExtCtrls, OleServer, PartSrv_TLB, StdCtrls;
type
TfrmMain = class(TForm)
pnlClient: TPanel;
StringGrid1: TStringGrid;
pnlBottom: TPanel;
PartServer1: TPartServer;
ecServer: TEdit;
btnConnect: TButton;
Label1: TLabel;
MainMenu1: TMainMenu;
File1: TMenuItem;
Edit1: TMenuItem;
Exit1: TMenuItem;
UsrPart1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure UsePart1Click(Sender: TObject);
procedure PartServer1Add(Sender: TObject; varFields,
varValues: OleVariant);
procedure PartServer1Delete(Sender: TObject;
var PartNumber: OleVariant);
procedure PartServer1Modify(Sender: TObject;
var PartNumber: OleVariant; varFields, varValues: OleVariant);
procedure btnConnectClick(Sender: TObject);
private
{ Private declarations }
FFields: OleVariant;
procedure LoadPartGrid;
procedure LoadRow(Row: Integer; varFields, varValues: OleVariant);
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.DFM}
procedure TfrmMain.FormCreate(Sender: TObject);
begin
FFields := VarArrayCreate([0, 3], varInteger);
FFields[0] := fnPartNumber;
FFields[1] := fnDescription;
FFields[2] := fnUnitPrice;
FFields[3] := fnOnHand;
end;
procedure TfrmMain.btnConnectClick(Sender: TObject);
begin
// If no server was entered, we'll use the local machine
if ecServer.Text <> '' then
PartServer1.RemoteMachineName := ecServer.Text;
PartServer1.Connect;
// Load all parts from the database server
LoadPartGrid;
// Enable the edit menu
Edit1.Enabled := True;
end;
procedure TfrmMain.LoadRow(Row: Integer; varFields, varValues: OleVariant);
var
ValueIndex: Integer;
ColIndex: Integer;
begin
for ValueIndex := VarArrayLowBound(varValues, 1) to VarArrayHighBound(varValues, 1) do
for ColIndex := VarArrayLowBound(FFields, 1) to VarArrayHighBound(FFields, 1) do
if FFields[ColIndex] = varFields[ValueIndex] then
StringGrid1.Cells[ColIndex, Row] := varValues[ValueIndex];
end;
procedure TfrmMain.LoadPartGrid;
var
varValues: OleVariant;
Index: Integer;
FieldNumber: Integer;
Row: Integer;
begin
varValues := PartServer1.GetAll(FFields);
StringGrid1.RowCount := VarArrayHighBound(varValues, 1) -
VarArrayLowBound(varValues, 1) + 2;
StringGrid1.ColCount := VarArrayHighBound(FFields, 1) -
VarArrayLowBound(FFields, 1) + 1;
for Index := VarArrayLowBound(FFields, 1) to VarArrayHighBound(FFields, 1) do begin
FieldNumber := FFields[Index];
case FieldNumber of
fnPartNumber: StringGrid1.Cells[Index, 0] := 'Part #';
fnDescription: StringGrid1.Cells[Index, 0] := 'Description';
fnUnitPrice: StringGrid1.Cells[Index, 0] := 'Unit Price';
fnOnHand: StringGrid1.Cells[Index, 0] := 'On Hand';
fnReorder: StringGrid1.Cells[Index, 0] := 'Reorder';
end;
end;
Row := 1;
for Index := VarArrayLowBound(varValues, 1) to VarArrayHighBound(varValues, 1) do begin
LoadRow(Row, FFields, varValues[Index]);
Inc(Row);
end;
end;
procedure TfrmMain.Exit1Click(Sender: TObject);
begin
Close;
end;
procedure TfrmMain.UsePart1Click(Sender: TObject);
var
Value: string;
PartNumber: string;
begin
if InputQuery('Use Part', 'How many would you like to relieve from stock?',
Value) then begin
PartNumber := StringGrid1.Cells[0, StringGrid1.Row];
PartServer1.UsePart(PartNumber, StrToInt(Value));
end;
end;
procedure TfrmMain.PartServer1Add(Sender: TObject; varFields,
varValues: OleVariant);
begin
// A new part was added - reload the whole grid
LoadPartGrid;
end;
procedure TfrmMain.PartServer1Delete(Sender: TObject;
var PartNumber: OleVariant);
begin
// A part was deleted - reload the whole grid
LoadPartGrid;
end;
procedure TfrmMain.PartServer1Modify(Sender: TObject;
var PartNumber: OleVariant; varFields, varValues: OleVariant);
var
Index: Integer;
Found: Boolean;
begin
Found := False;
Index := 1;
// If we can find the original part, just reload the row
while (not Found) and (Index < StringGrid1.RowCount) do begin
if StringGrid1.Cells[0, Index] = PartNumber then begin
LoadRow(Index, varFields, varValues);
Found := True;
end else
Inc(Index);
end;
// Couldn't find the part, so reload the whole grid
if not Found then
LoadPartGrid;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -