Jak na formularzu wyświetlić inny formularz z pliku dll ale nie w MDI.
Na tej stronie był kod Child coś do MDI ,a jak to zrobić tylko dla jednego uchwytu na panelu żeby wyświetlił się ten głupi formularz z dllka.
POMOCY!!! [glowa]
Jak na formularzu wyświetlić inny formularz z pliku dll ale nie w MDI.
Na tej stronie był kod Child coś do MDI ,a jak to zrobić tylko dla jednego uchwytu na panelu żeby wyświetlił się ten głupi formularz z dllka.
POMOCY!!! [glowa]
hmm... frames jes tutaj dobrym pomysłem... można również bawić się z parentem formularza... może coś jeszcze się znajdzie (ps. taki problem jaki ty chcesz rozwiązać był już kilka razy poruszany... tylko trzeba go wyszukać)
TFrames też nie chodzi.
Czy mogę prosić o jakiś przykład.
Gdzieś po forum pałęta się mój kod na eksport klasy z DLLa...
Dział C/C++, jeden z niewielu tematów założonych przez Marooned'a, chyba z podobnym problemem - kod dałem w Delphi (niestety okazał się nieprzetłumaczalny na C++). Jeśli rozumiesz w miarę dobrze system obiektowy, to ci się przyda.
Szukałem nie znalazłem ,prosiłem o kod i się niedoprosiłem.
Więc prosze ale to bardzo o mały kodzik źródłowy.
Czy jest ktoś na forum co na tym się zna?
PANEL=FORM z DLL
Ech... To na pewno gdzieś się pałęta w C/C++, ale miałem wolną chwilkę to poszukałem u siebie... Tylko nie proś o pomoc, jeśli sobie z tym nie poradzisz - to już twój problem.
Kod DLL:
library Test;
uses
{...}
Forms,
UnitZFormularzem in 'UnitZFormularzem.pas';
type
TFormClass = class of TForm;
function GetFormClass: TFormClass;
begin
Result:=TPluginForm; //czy jak tam się u ciebie nazywa klasa formularza
end;
exports
GetFormClass;
begin
end.
Formularz ustaw bez ramki (BorderStyle:=bsNone) i daj wymiary 1x1.
W programie:
...
type
TFormClass = class of TForm;
...
var
HLib: THandle;
TmpForm: TForm;
DLLFormClass: TFormClass;
GetFormClass: function: TFormClass;
begin
HLib:=LoadLIbrary('test.dll');
@GetFormClass:=GetProcAddress(HLib,'GetFormClass');
DLLFormClass:=GetFormClass;
TmpForm:=DLLFormClass.Create(Self);
TmpForm.ParentWindow:=Panel1.Handle; //będzie na panelu o nazwie Panel1. Może być też np. Self.ClientHandle - efekt podobny do MDI
TmpForm.WindowState:=wsMaximzed;
FreeLibrary(HLib);
end;