Witajcie.
Mam nadzieję, że nikt na mnie nie na krzyczy, za głupie pytania.
Tworzę aplikację. Postanowiłem umieścić główne funkcje programu w oddzielnych DLL-ach razem z formami i ramkami. Trochę kodu.
Główne okno aplikacji.
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus;
type
TDuoArray = array of array of string;
TfrmMain = class(TForm)
MainMenu1: TMainMenu;
mmProducts: TMenuItem;
mmPurchase: TMenuItem;
mmSell: TMenuItem;
procedure mmProductsClick(Sender: TObject);
procedure mmPurchaseClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
frmRamka: TFrame;
implementation
{$R *.dfm}
uses DM, ADODB;
procedure ShowProducts; stdcall; external 'productsDynamic.dll' name 'ShowProducts';
procedure TfrmMain.mmProductsClick(Sender: TObject);
begin
Data.adsProducts.Active := False;
ShowProducts;
Data.adsProducts.Active := True;
end;
end.
Kod główny biblioteki dll:
library productsDynamic;
uses
SysUtils,
Classes,
Forms,
Windows,
ProductsDLL in 'ProductsDLL.pas' {frmProductsDLL: TFrame},
NewEditProductDLL in 'NewEditProductDLL.pas' {Form1},
Main;
{$R *.res}
var frmRamka : TfrmProductsDLL;
procedure ShowProducts; stdcall;
begin
frmRamka := TfrmProductsDLL.Create(Application);
frmRamka.Parent := frmMain;
end;
exports
ShowProducts name 'ShowProducts';
begin
end.
Kodu ramki nie zamieszczam, bo nie ma ona znaczenia.
Kiedy klikam w pozycję menu w głównym oknie, powinna pojawić się ramka. Niestety nie pojawia się. Ale jest tworzona, bo kiedy ponownie klikam tą pozycję menu, wyskakuje błąd z informacją, że taki TFrame już jest.
Co robię źle?
Jeśli ktoś zakwalifikuje tego posta jako newbie, nie obrażę się. :)