AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Grosse Probleme mit delphi-dll.

Ein Thema von Explorer · begonnen am 10. Aug 2006 · letzter Beitrag vom 10. Aug 2006
Antwort Antwort
rbonk

Registriert seit: 10. Aug 2006
3 Beiträge
 
#1

Re: Grosse Probleme mit delphi-dll.

  Alt 10. Aug 2006, 12:54
Hallo Karlheinz,

der Code Deiner DLL ist etwas konfus (Verzeihung). Hier mein Vorschlag.

Delphi-Quellcode:
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz