![]() |
Re: Form zu einer "Gruppe" zuweisen?
Zitat:
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:
Stammt das Formular nicht von dir, oder ist kein VCL Formular dann kannst du es an die Anwendung ankoppeln mit
function CreateDllForm(AppHandle: THandle): TForm;
begin Application.Handle := AppHandle; Result := TMyForm.Create(Application); end;
Delphi-Quellcode:
SetWindowLong(w, GWL_HWNDPARENT, Application.Handle);
|
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 |
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:
Mfg
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. |
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. |
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. |
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