Entwickler-Ecke

Sonstiges (Delphi) - Plugin dynamisch eingebunden in dynamisches Pagecontrol? :-)


DT2158 - So 23.03.03 14:07
Titel: Plugin dynamisch eingebunden in dynamisches Pagecontrol? :-)
Also ich möchte ein ein ein tabsheet dynamisch zu laufzeit erzeugen und dieses tabsheet soll auf einem vorgebenen Pagecontrol aus einer dll geladen werden!

So hier mein ansatz wenn ich das tabsheet dynamisch aus dem programm heraus erzeuge


Quelltext
1:
2:
3:
4:
TabSheetTest := TTabSheet.Create((FindComponent('PageControlTool') as TPageControl).Name);
TabSheetTest.PageControl := (FindComponent('PageControlTool') as TPageControl).Name;
TabsheetTest.Caption := 'Test';
TabsheetTest.Name := 'TabSheetTool1';



so und das funktionniert auch!
wenn ich das aber in eine dll packe


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var
 TabSheetTest: TTabSheet;

{$R *.res}

procedure Test;
begin
TabSheetTest := TTabSheet.Create((FindComponent('PageControlTool') as TPageControl).Name);
TabSheetTest.PageControl := (FindComponent('PageControlTool') as TPageControl).Name;
TabsheetTest.Caption := 'Test';
TabsheetTest.Name := 'TabSheetTool1';
end;

exports Test;

begin
end.

kommt die meldung, dass "findcomponent" ein ungültiger bezeichner wäre, anscheinend kann man diesen nicht in dlls verwenden. Wahrscheinlich muss man hier über Handles auf das pagecontrol zugreifen, leider hab ich davon keine ahnung.

Kann mir da vielleicht jemand weiterhelfen?

Danke
DT2158


AndyB - So 23.03.03 18:57

FindComponent ist keine Prozedur, sondern eine Methode und diese gehört zur Klasse TComponent, von der alle Komponenten abgeleitet sind. Du kannst FindComponent somit nicht einfach aufrufen.


DT2158 - So 23.03.03 20:36

wenn ich den code hätte, (PE), würden doch die Methode auch nur durch Proceduren bzw Funktionen in der Klasse TComponent dargestellt werden!