Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi GUI per DLL (https://www.delphipraxis.net/50358-gui-per-dll.html)

VT-DA 24. Jul 2005 13:29


GUI per DLL
 
Hi,

ich versuche z.Z. eine kleine GUI für eine andere programmiersprache zu schreiben.
Dabei habe ich mir gedacht einfach die Delphibefehle in eine DLL zu schreiben und dann einzusetzen.
Bis jetzt habe ich mit der Hilfe geschaft eine DLL zu machen womit man ein Form erstellen kann.
Doch da ein Form leider nicht reicht, möchte ich gerne noch ein paar Buttons und so rein haben.
Jetzt meine Frage. Wie lauten die Befehle zum erstellen eines buttons oder einer Memo?
Oder gibt es vielleicht sogar eine Sektion in der Hilfe die ich noch nicht gesehen habe wo alle Befehle aufgelistet sind?
Hier mal mein derzeitiger code der in der dll steht.

Delphi-Quellcode:
library Project2;

uses
  Windows,
  Messages,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs;

procedure DLLFormShow;
var Form: Tform;
begin
Application.CreateForm(Tform, form);
  Form.Show;
end;

exports
  DLLFormShow;
{$R *.res}


begin
end.
Mfg

BenjaminH 24. Jul 2005 13:42

Re: GUI per DLL
 
Einen Button erstellst du so:
Delphi-Quellcode:
Button:TButton;

Button:=TButton.Create(Form);

new32 24. Jul 2005 13:49

Re: GUI per DLL
 
Delphi-Quellcode:
...

var button1:Tbutton;

...

button1:=Tbutton.create(form);
button1.parent:=form;
button1.show;
...
MfG NEW32!

ste_ett 24. Jul 2005 13:56

Re: GUI per DLL
 
Code:
library Project2;

uses
  Windows,
  Messages,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  StdCtrls;

var
  Form: TForm;
  Button: TButton;
  Memo: TMemo;

procedure DLLFormShow; stdcall;
begin
  Form := TForm.Create(nil);
  Memo := TMemo.Create(Form);
  Button := TButton.Create(Form);
  Form.Show;
end;

procedure DLLFormFree; stdcall;
begin
  Memo.Free;
  Button.Free;
  Form.Free;
end;

exports
  DLLFormShow,
  DLLFormFree;
{$R *.res}


begin
end.

VT-DA 24. Jul 2005 14:29

Re: GUI per DLL
 
Hi,

Danke für eure Hilfe. Doch leider komm ich schon wieder nicht weiter.
Ich versuche einen procedure auszuführen doch der gibt mir wie fast immer nur Fehler aus.
Hier nochmal der derzeitige Code:

Delphi-Quellcode:
library form;

uses
  Windows,
  Messages,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  StdCtrls;

var
  Form1: TForm;
  Button1: TButton;
  Memo1: TMemo;

procedure DLLFormShow; stdcall;
begin
  Form1 := TForm.Create(nil);
  Memo1 := TMemo.Create(Form1);
  Memo1.Parent := Form1;
  Button1 := TButton.Create(Form1);
  Button1.Parent := Form1;
  Button1.Width := 100;
  Button1.Height := 100;
  Form1.Show;
  Memo1.Show;
  Button1.Show;

end;

procedure Form1.Button1Click(Sender: TObject); stdcall;
begin
  DLLFormFree;
end;

procedure DLLFormFree; stdcall;
begin
  Memo1.Free;
  Button1.Free;
  Form.1Free;
end;

exports
  DLLFormShow,
  DLLFormFree;
{$R *.res}


begin
end.
Mfg

MrKnogge 24. Jul 2005 14:33

Re: GUI per DLL
 
Delphi-Quellcode:
Button.Show
und
Delphi-Quellcode:
Memo.Show
gibt es nicht :wink:

VT-DA 24. Jul 2005 14:40

Re: GUI per DLL
 
Moin,

hmm. Klappt aber trodzdem damit. Naja. :)
Hab aber trodzdem noch den gleichen Fehler an dieser Stelle:
Delphi-Quellcode:
procedure Form1.Button1Click(Sender: TObject); stdcall;
Mfg

gsh 24. Jul 2005 14:53

Re: GUI per DLL
 
Wenn dann so:
Delphi-Quellcode:
procedure Button1Click(Sender: TObject);
Außerdem musst du diese prozedure dem Button zuweissen:

Delphi-Quellcode:
procedure DLLFormShow; stdcall;
begin
  Form1 := TForm.Create(nil);
  Form1.Top := 0;
  Form1.left := 0;
  Form1.Width := 100;
  Form1.Height := 200;
  Memo1 := TMemo.Create(Form1);
  Memo1.Top := 100;
  Memo1.left := 0;
  Memo1.Width := 100;
  Memo1.Height := 100;
  Memo1.Parent := Form1;
  Button1 := TButton.Create(Form1);
  Button1.Top := 0;
  Button1.left := 0;
  Button1.Width := 100;
  Button1.Height := 100;
  Button1.Caption := 'FreeMe';
  Button1.OnClick := Button1Click; //Hier, weiss aber nicht ob des genau so heisst
  Button1.Parent := Form1;
  Form1.Show;
end;
Ungetestet

//edit: Fehler ausgebessert

VT-DA 24. Jul 2005 15:02

Re: GUI per DLL
 
Hi,

hmm. Ne klappt nicht.
Fehler bei Button1.OnClick := Button1Click; //Hier, weiss aber nicht ob des genau so heisst
Hab auch nochmal so gekuckt. Der befehl scheint aber richtig zu sein.
Komisch. :|

Mfg

MrKnogge 24. Jul 2005 15:16

Re: GUI per DLL
 
Versuch mal

Delphi-Quellcode:
procedure DLLFormShow(app: TApplication); stdcall;
begin
  Form1 := TForm.Create(app);
...
gruss

VT-DA 24. Jul 2005 15:22

Re: GUI per DLL
 
Hi,

Argh. Sagt immer noch an der gleichen Stelle den Fehler.
Hier jetzt nocheinmal der komplette code aus der DLL.
auf ein neues. :|

Delphi-Quellcode:
library form;

uses
  Windows,
  Messages,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  StdCtrls;

var
  Form1: TForm;
  Button1: TButton;
  Memo1: TMemo;

procedure DLLFormShow(app: TApplication); stdcall;
begin
  Form1 := TForm.Create(app);
  Form1.Top := 0;
  Form1.left := 0;
  Form1.Width := 100;
  Form1.Height := 200;
  Memo1 := TMemo.Create(Form1);
  Memo1.Top := 100;
  Memo1.left := 0;
  Memo1.Width := 100;
  Memo1.Height := 100;
  Memo1.Parent := Form1;
  Button1 := TButton.Create(Form1);
  Button1.Top := 0;
  Button1.left := 0;
  Button1.Width := 100;
  Button1.Height := 100;
  Button1.Caption := 'FreeMe';
  Button1.OnClick := Button1Click; //Hier, weiss aber nicht ob des genau so heisst
  Button1.Parent := Form1;
  Form1.Show;
end;

procedure Button1Click(Sender: TObject); stdcall;
begin
  Memo1.Free;
  Button1.Free;
  Form1.Free;
end;



exports
  DLLFormShow;
  Button1Click;
{$R *.res}


begin
end.
Mfg

Luckie 24. Jul 2005 20:22

Re: GUI per DLL
 
Warum benutzt du nicht die IDE, um dir deine Form zusammenzuklicken?

VT-DA 24. Jul 2005 22:23

Re: GUI per DLL
 
Hi,

Jop. Habs jetzt so gemacht wie du es meintest und es klappt auch so. :)
Thx nochmal an alle die geholfen haben. ;)

Mfg

The-X 27. Jul 2005 19:59

Re: GUI per DLL
 
Delphi-Quellcode:
procedure Button1Click(Sender: TObject); stdcall;
begin
  Memo1.Free;
  Button1.Free;
  Form1.Free;
end;
^^ "Tödlich" ... das Objekt in seinem eigenen Event zu free'n ...
nur als kleine Anmerkung

Daniel G 27. Jul 2005 20:08

Re: GUI per DLL
 
Zitat:

Zitat von Luckie
Warum benutzt du nicht die IDE, um dir deine Form zusammenzuklicken?

Weil er nicht weiß, wieviele Buttons, Edits etc. pp. seine Kunden denn nun haben wollen (er schreibt doch eine eigene IDE. Steht doch im Eingangspost) :zwinker:

idontwantaname 27. Jul 2005 21:37

Re: GUI per DLL
 
Delphi-Quellcode:
procedure Button1Click(Sender: TObject); stdcall;
begin
  Memo1.Free;
  Button1.Free;
  Form1.Free;
end;
muss man Memo1 und Button1 überhaupt freigeben ??
beim Create wird doch ein Owner übergeben, da muss man sich doch nicht um das freigeben kümmern oder irre ich mich da ?? :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz