Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Form zu einer "Gruppe" zuweisen? (https://www.delphipraxis.net/50700-form-zu-einer-gruppe-zuweisen.html)

jbg 31. Jul 2005 09:39

Re: Form zu einer "Gruppe" zuweisen?
 
Zitat:

Ich habe halt eine DLL und dort ist eine function.
Dazu zwei Fragen:

1. Hast du ShareMem im Hauptprogramm und in der DLL als aller erste Unit in der .dpr Datei eingefügt? (Wenn nicht kracht es irgendwann während das Programm läuft)

2. Du erstellt das zweite Formular in der DLL mit Hilfe dieser Funktion? Oder ist der DLL-Code nicht von dir und du willst ihn nur nutzen?

Wenn du die Macht über den DLL-Code hast, dann kannst du das Formular (sofern VCL) in die Hauptanwendung einfügen, indem du vor dem Erzeugen des Formulars das Application.Handle auf die der Hauptanwendung setzt.
Delphi-Quellcode:
function CreateDllForm(AppHandle: THandle): TForm;
begin
  Application.Handle := AppHandle;
  Result := TMyForm.Create(Application);
end;
Stammt das Formular nicht von dir, oder ist kein VCL Formular dann kannst du es an die Anwendung ankoppeln mit
Delphi-Quellcode:
SetWindowLong(w, GWL_HWNDPARENT, Application.Handle);

VT-DA 31. Jul 2005 11:15

Re: Form zu einer "Gruppe" zuweisen?
 
Hi,

Also. Es gibt kein Hauptprogramm und es gibt auch keine unit. Es gibt nur die DLL wo alle Fenster erstellt werden und dann nachher in der anderen Programmiersprache geladen werden.
Deswegen werden auch alle Fenster in der DLL erstellt.
Das heißt es müsste die erste Variante klappen.
Ich probiers also mal aus. danke. :)

Mfg

VT-DA 31. Jul 2005 13:03

Re: Form zu einer "Gruppe" zuweisen?
 
Hi,

hmm. Irgendwie klappt alles nicht.
Ich hab jetzt mal nen Beispiel gemacht.
Vllt bringt das ja was?

Delphi-Quellcode:
library Gruppe;

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

var Form1, Form2: TForm;

{$R *.res}

procedure CreateDllForm; stdcall;
begin
  Form1 := TForm.Create(Application);
  Application.Handle := Form1;
  Form2 := TForm.Create(Application);
end;

procedure CreateForm; stdcall;
begin
  Form1 := TForm.Create(Application);
  Form2 := TForm.Create(Application);
  SetWindowLong(Form1, GWL_HWNDPARENT, Application.Form2);
  Form1.Show;
  Form2.Show;
end;

exports
  CreateForm, CreateDLLForm;

begin
end.
Mfg

jbg 31. Jul 2005 14:33

Re: Form zu einer "Gruppe" zuweisen?
 
Du hast wohl nocht nicht den Unterschied zwischen Handle und Form herausgefunden. Wenn dann schon Form.Handle benutzen, auch wenn es dann trotzdem falsch ist.

In deinem Fall rate ich statt "Form1 := TForm.Create(Application)" zu "Application.CreateForm(TForm, Form1)" denn damit weiß die Anwendung, dass das erste Formular als Hauptfenster zu betrachten ist. Der SetWindowLong brauchst du dann nicht mehr.

VT-DA 31. Jul 2005 22:23

Re: Form zu einer "Gruppe" zuweisen?
 
Hi,

Hui. Jetzt klappts. Recht herzlichen dank. :)

Mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr.
Seite 3 von 3     123   

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