Chciałbym zrobić cos takiego : jest sobie exec i dll`ka.
Biblioteczka zawiera formę, którą chce zagnieździć w np. panel1 formy glownej programu. Ma ktoś jakieś pomysły? :D

- Rejestracja:ponad 21 lat
- Ostatnio:ponad 6 lat
- Postów:370
Sorry, zle przeczytalem pytanie :P
Ogolnie, to znaczy co i jak przekazywać :P
Probowalem czegos takiego:
Dll:
procedure CreateFrm(parent:pointer);
begin
Form1:=TForm1.Create(pointer);
Form1.Parent:=(pointer as TWinControl);
Form1.Show;
end;
a w execu: CreateFrm(Panell1)
Ale nie wychodzlilo ;(

- Rejestracja:ponad 22 lata
- Ostatnio:prawie 11 lat
W jednym ze swoich programów zrobiłem po prostu tak:
function ShowPrinters(AParent: TWinControl): TForm;
begin
Result := TPrintersFrm.Create(Application);
with Result do
begin
Parent := AParent;
BorderStyle := bsNone;
BorderIcons := [];
Left := 0;
Top := 0;
Align := alClient;
Show;
end;
end;
TPrintersFrm to typ formularza pokazywanego na Panelu. Funkcja przy okazji zwraca wskaźnik do formularza, aby można go było zwolnić, gdy już nie będzie potrzebny.

- Rejestracja:ponad 21 lat
- Ostatnio:ponad 6 lat
- Postów:370
W jednym ze swoich programów zrobiłem po prostu tak:
function ShowPrinters(AParent: TWinControl): TForm;
begin
Result := TPrintersFrm.Create(Application);
with Result do
begin
Parent := AParent;
BorderStyle := bsNone;
BorderIcons := [];
Left := 0;
Top := 0;
Align := alClient;
Show;
end;
end;
TPrintersFrm to typ formularza pokazywanego na Panelu. Funkcja przy okazji zwraca wskaźnik do formularza, aby można go było zwolnić, gdy już nie będzie potrzebny.
W zasadzie brzmi niezle,ale... Nie działa... Może źle używam? Robie to tak:
ShowPrinters(Panel1);
a deklaruje tak: function ShowPrinters(AParent: TWinControl): TForm;external 'project1.dll';
a oczywiscie w project1.dll jest ta funkcja w exports :P. Jak klikam na button1 (do ktorego jest przypisane uzycie funkcji) to nie dzieje sie nic a jak wylaczam program to sie pojawia blad Acces Violation... :-/

- Rejestracja:ponad 22 lata
- Ostatnio:prawie 11 lat
Hmm, ciężko mi powiedzieć bez kodu... Ja to miałem w EXE :) Może ew. spróbuj zrobić tak:
function ShowPrinters(AParent: Longint): Longint;
begin
Result := Longint(TPrintersFrm.Create(TWinControl(AParent)));
with TForm(Result) do
begin
Parent := TWinControl(AParent);
BorderStyle := bsNone;
BorderIcons := [];
Left := 0;
Top := 0;
Align := alClient;
Show;
end;
end;
Czyli przekazuj zwykłe Longinty zamiast "kompletnych" obiektów. Później sprawę załatwisz poprzez rzutowanie. Jak nie działa, to może zamieść kod, który powoduje problem.
// DOPISANE:
Podaj kod, który powoduje ten problem, to postaram się coś wykombinować.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.