26. februar 2002 - 11:53
Der er
1 kommentar og
1 løsning
Vise en form i en dll-fil, sum er åbnet af en anden dll-fil
Jeg lavet en dll-fil med en form på. Når en knap på formen bliver aktiveret, skal en anden dll-fil åbnes og formen på denne fil skal vises.
Jeg har prøvet at lave dette, men jeg får ikki vist formen. Koden på formen kan jeg godt køre.
Er der nogen der kan hjælpe mig.
26. februar 2002 - 14:50
#2
Dette er den første DLL:
library Umsokn;
uses
ShareMem,
SysUtils,
Classes,
UmsoknUnit in 'UmsoknUnit.pas' {FormUmsokn}
{$R *.res}
procedure ShowFormUmsokn; stdcall;
begin
if FormUmsokn = nil Then
FormUmsokn := TFormUmsokn.Create(nil);
FormUmsokn.Show;
end;
exports
ShowFormUmsokn;
begin
end.
På formen til denne DLL er en knap, sum skal åbne formen på en anden DLL, sum er lavet på samme måde.
unit UmsoknUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, CheckLst, ComCtrls, DB, ADODB;
type
TSortB = procedure;
TFormUmsokn = class(TForm)
.
.
..
Button1: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
SortB : TSortB;
public
{ Public declarations }
DllHandle : THandle;
end;
var
FormUmsokn: TFormUmsokn;
implementation
uses
{$R *.dfm}
procedure TFormUmsokn.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FreeLibrary(DllHandle);
DllHandle := 0;
Action := caFree;
FormUmsokn := nil;
end;
procedure TFormUmsokn.Button1Click(Sender: TObject);
begin
DllHandle := LoadLibrary('Sort.dll');
if DllHandle <> 0 Then begin
@SortB := GetProcAddress(DllHandle, 'SortB');
SortB;
end
else
Showmessage('blabla');
end;
end.