unit dll_mit_fenster;
interface
uses
{### ShareMem,
Diese Unit - falls notwendig - ganz zuerst in der DLL-Projektdatei
(*.dpr) einbinden. Siehe Delphi-Doku.}
inifiles, Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, IdComponent, IdTCPConnection, IdTCPClient,
IdMessageClient, IdSMTP, ComCtrls, StdCtrls, Buttons, ExtCtrls,
IdBaseComponent, IdMessage;
{### die Klassendefinitionen können in den Implementation- Teil der Unit}
///*** die DLL-Deklarationen
function ZeigeFenster(
const PanelBreite :Integer) : Integer;
stdcall;
{## export;}
{### 'export' - Anweisung ist überflüssig.}
implementation
type
{## TKischAlles = class(TComponent)
diese Klasse ist überflüsssig, einfacher gleich eine Klasse von TForm
ableiten:
}
TKischFenster =
class (TForm)
private
FKischPanel : TPanel;
public { Public declarations }
constructor Create(AOwner: TComponent);
override;
{### destructor Destroy; override; }
Procedure ZeigeFenster(PanelBreite: Integer);
end;
var
KischFenster : TKischFenster =
Nil;
{### Deklariere eine mit Nil initialisierte Instanzvariable des Fensters,
damit bei jedem Aufruf einer DLL- Funktion(en) die Instanz verwendet
werden kann }
//----------- TKischFenster
constructor TKischFenster.Create(AOwner: TComponent);
begin
CreateNew(AOwner);
{### Konstruktor CreateNew verwenden, weil es keine *.DFM- Datei zu dem Form
gibt!}
SetBounds (200,200,500,300);
Caption := '
Jippi-ey-hey.';
FKischPanel := Tpanel.Create(Self);
with FKischPanel
do begin
Parent := Self;
{### Initialisiere das Panel mit default-Eigenschaften}
SetBounds (100, 100, 100, 20);
Caption := '
0,0 % Fett';
end;
end;
Procedure TKischFenster.ZeigeFenster(PanelBreite: Integer);
begin
FKischPanel.Width := PanelBreite;
Show;
end;
//----- DLL-Export
function ZeigeFenster(
const PanelBreite :Integer) : Integer;
stdcall;
begin
if KischFenster =
Nil then
KischFenster := TKischFenster.Create(
Nil);
KischFenster.ZeigeFenster(PanelBreite);
end;
//-----------
initialization
finalization
{### das Fenster muss irgendwann wieder gelöscht werden - spätestens jetzt !}
KischFenster.Free;
end.