Marco Cantù 1998, Mastering Delphi 4
Project: TESTPRJ.DPR
Project Structure
TESTPRJ.DPR
program TestPrj;
uses
Forms,
TestForm in 'TestForm.pas' {Form1},
Base in 'Base.pas';
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
TESTFORM.PAS
unit TestForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Spin, Base;
type
TForm1 = class(TForm)
SpinEdit1: TSpinEdit;
Button1: TButton;
Button2: TButton;
SpinEdit2: TSpinEdit;
Button3: TButton;
Button4: TButton;
Label1: TLabel;
Label2: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
Num1, Num2 : TDllNumber;
public
{ Public declarations }
end;
function NewObject: TDllNumber; stdcall;
external 'DllObj.dll';
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
// create first object
Num1 := NewObject;
Num1.SetValue (SpinEdit1.Value);
Label1.Caption := 'Num1: ' + IntToStr (Num1.GetValue);
// create second object
Num2 := NewObject;
Num2.SetValue (SpinEdit2.Value);
Label2.Caption := 'Num2: ' + IntToStr (Num2.GetValue);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// change
Num1.SetValue (SpinEdit1.Value);
Label1.Caption := 'Num1: ' + IntToStr (Num1.GetValue);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// increase
Num1.Increase;
Label1.Caption := 'Num1: ' + IntToStr (Num1.GetValue);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Num2.SetValue (SpinEdit2.Value);
Label2.Caption := 'Num2: ' + IntToStr (Num2.GetValue);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Num2.Increase;
Label2.Caption := 'Num2: ' + IntToStr (Num2.GetValue);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Num1.Free;
Num2.Free;
end;
end.
BASE.PAS
unit Base;
interface
type
TDllNumber = class
public
function GetValue: Integer; virtual; abstract;
procedure SetValue (New: Integer); virtual; abstract;
procedure Increase; virtual; abstract;
end;
implementation
end.
TESTFORM.DFM
object Form1: TForm1
Left = 158
Top = 170
Width = 294
Height = 213
Caption = 'TestPrj'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OnCreate = FormCreate
OnDestroy = FormDestroy
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 40
Top = 24
Width = 28
Height = 13
Caption = 'Num1'
end
object Label2: TLabel
Left = 168
Top = 24
Width = 28
Height = 13
Caption = 'Num2'
end
object SpinEdit1: TSpinEdit
Left = 40
Top = 48
Width = 73
Height = 22
MaxValue = 0
MinValue = 0
TabOrder = 0
Value = 22
end
object Button1: TButton
Left = 40
Top = 88
Width = 75
Height = 25
Caption = '&Change'
TabOrder = 1
OnClick = Button1Click
end
object Button2: TButton
Left = 40
Top = 128
Width = 75
Height = 25
Caption = '&Next'
TabOrder = 2
OnClick = Button2Click
end
object SpinEdit2: TSpinEdit
Left = 168
Top = 48
Width = 73
Height = 22
MaxValue = 0
MinValue = 0
TabOrder = 3
Value = 22
end
object Button3: TButton
Left = 168
Top = 88
Width = 75
Height = 25
Caption = 'C&hange'
TabOrder = 4
OnClick = Button3Click
end
object Button4: TButton
Left = 168
Top = 128
Width = 75
Height = 25
Caption = 'N&ext'
TabOrder = 5
OnClick = Button4Click
end
end
Copyright Marco Cantù 1998