DLL i formularze

0

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]

0

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ć)

0

TFrames też nie chodzi.
Czy mogę prosić o jakiś przykład.

0

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.

0

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.

0

Czy jest ktoś na forum co na tym się zna?

PANEL=FORM z DLL

0

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;

1 użytkowników online, w tym zalogowanych: 0, gości: 1