Naar aanleiding van een ieder draadje "eigen class in eigen class" kom ik nu met een vervolg vraag.
Uitgaande van een eigen class TMyClassA. Deze class bevat twee andere door mijzelf gedefinieerde classes.
Te weten TMyClassB, TMyClassC.
OK, zoals jullie zien wordt MyClassB gelijk aangemaakt op de create van MyClassA. MyClassC wil ik echter op zelf gekozen momenten aanmaken en afsluiten.
Nou dacht ik dat op de volgende wijze te doen:
Maar dit werkt niet...
Uitgaande van een eigen class TMyClassA. Deze class bevat twee andere door mijzelf gedefinieerde classes.
Te weten TMyClassB, TMyClassC.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| type
TMyClassA = class(TObject)
private
FMyClassB: TMyClassB;
FMyClassC: TMyClassC;
public
constructor Create; override;
destructor Destroy; override;
procedure SetMyClassB(const Value: TMyClassB);
procedure SetMyClassC(const Value: TMyClassC);
property MyClassB: TMyClassB read FMyClassB write SetMyClassB;
property MyClassC: TMyClassC read FMyClassC write SetMyClassC;
end;
implementation
constructor TMyClassA.Create;
begin
inherited Create;
FMyClassB := TMyClassB.Create;
end;
destructor TMyClassA.Destroy;
begin
FMyClassB.Free;
inherited;
end;
procedure TMyClassA.SetMyClassB(const Value: TMyClassB);
begin
if Assigned(Value) then
FMyClassB.Assign(Value);
end;
procedure TMyClassA.SetMyClassC(const Value: TMyClassC);
begin
if Assigned(Value) then
FMyClassC.Assign(Value);
end; |
OK, zoals jullie zien wordt MyClassB gelijk aangemaakt op de create van MyClassA. MyClassC wil ik echter op zelf gekozen momenten aanmaken en afsluiten.
Nou dacht ik dat op de volgende wijze te doen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MyClassA_Bestand;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
MyA: TMyClassA;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
MyA := TMyClassA.Create;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
MyA.MyClassC : TMyClassC.Create;
// voer hier een memberfunctie van MyClassC uit
end;
end. |
Maar dit werkt niet...
Is er iemand met enig idee wat hier misgaat en waarom?[Error] main.pas(38): Undeclared identifier: <<Memberfunctie MyClassC>>