unit fcontrollink;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls;
type
TMyClass = class
public
Field1,
Field2 : string;
end;
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
Edit2: TEdit;
Memo1: TMemo;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Edit1EditingDone(Sender: TObject);
procedure Edit2EditingDone(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
FMyClass : TMyClass;
function getF1: string;
function getF2: string;
procedure setF1(s: string);
procedure setF2(s: string);
procedure setMyClass(mc: TMyClass);
public
property MyClass: TMyClass read FMyClass write setMyClass;
property F1: string read getF1 write setF1;
property F2: string read getF2 write setF2;
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if MyClass <> nil then with memo1.lines do
begin
Add('Field1 is ' + MyClass.Field1) ;
Add('Field2 is ' + MyClass.Field2) ;
end;
end;
procedure TForm1.Edit1EditingDone(Sender: TObject);
begin
F1 := trim(Edit1.Text);
end;
procedure TForm1.Edit2EditingDone(Sender: TObject);
begin
F2 := trim(Edit2.Text);
ShowMessage('edit2editingdone called'); // comment out this and press Button3.
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Randomize;
F1 := IntToStr(Trunc(Random(1000000)));
F2 := IntToStr(Trunc(Random(1000000)));
end;
procedure TForm1.FormCreate(Sender: TObject);
var
anmc : TMyClass;
begin
anmc := TMyClass.Create;
anmc.Field1 := 'string field 1';
anmc.Field2 := 'string field 2';
MyClass := anmc;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
MyClass.Free;
end;
function TForm1.getF1: string;
begin
if FMyClass <> nil then Result := FMyClass.Field1 else Result := '';
end;
function TForm1.getF2: string;
begin
if FMyClass <> nil then Result := FMyClass.Field2 else Result := '';
end;
procedure TForm1.setF1(s: string);
begin
if MyClass <> nil then MyClass.Field1:= s;
Edit1.Text := s;
end;
procedure TForm1.setF2(s: string);
begin
if MyClass <> nil then MyClass.Field2:= s;
Edit2.Text := s;
end;
procedure TForm1.setMyClass(mc: TMyClass);
begin
if mc <> nil then begin
FMyClass := mc;
Edit1.Enabled := True;
Edit2.Enabled := True;
Edit1.Text := FMyClass.Field1;
Edit2.Text := FMyClass.Field2;
end
else begin
Edit1.Enabled := False;
Edit2.Enabled := False;
end;
end;
end.