![]() |
Delphi-Version: XE4
Formular in ein Fenster eine Fremdapplikation einfügen
Hallo,
Wir haben eine DB Anwendung mit mehreren zigtausend Zeilen, geschrieben in OMNIS7. OMNIS7 ist ein 4GL System, welches um eigene Befehle in Form von DLL erweitert werden kann. Ein Erweiterungstyp ist eine sogenannte Extended Area, wobei die DLL die Kontrolle über die Darstellung und weitere Funktionalität erhält. Es handelt sich dabei NICHT um ein ActiveX oder COM Objekt. Ich würde gern die genannte Fläche, die ich über ein HDC ansprechen kann, mit einem Delphi Formular ausfüllen. Was bereits funktioniert: Ich kann ein Canvas Objekt erzeugen, diesem den HDC zuweisen und dann mit Delphi in das Canvas zeichnen. Ich würde nun gern ein komplettes Delphi Form dort zeichnen. Leider ist form.canvas aber eine read-only property. Frage: kann man irgendwie für ein Form die Canvas Eigenschaft umbiegen oder ist es vielleicht möglich, die Formular-Anzeige irgendwie anders in ein bekanntes HDC umzuleiten? Und bitte: ein Umschreiben der ganzen Anwendung in Delphi kommt leider nicht in Frage, dazu fehlt mir die halbe Million, die das vermutlich kosten würde. |
AW: Formular in ein Fenster eine Fremdapplikation einfügen
Du hast doch einen Devicekontext auf die Zielzeichenfläche und den Quellkontext in TForm.Canvas.Handle, dann kannst Du doch mit BitBlt einfach den einen in den anderen zeichnen, oder habe ich das Problem falsch verstanden?
|
AW: Formular in ein Fenster eine Fremdapplikation einfügen
Zitat:
Zitat:
Wenn es sein buß, dann kannst du aber jeweils selber per Befehl die Form da drauf malen. Entweder die Form direkt auf das HDC drucken, oder man nutzt die Befehle des Canvas, zum Kopieren. Falls man lieber ein Canvas durm draufmalen haben will, dann könnte eventuell auch eines der zahlreichen Beispiele suchen, wo über einen HDC irgendwo draufgezeichnet wird. Sehr oft trifft man dabei z.B. auf das Thema ![]() |
AW: Formular in ein Fenster eine Fremdapplikation einfügen
Anderer Ansatz: Ein normales Delphi Formular erstellen und dann
![]() |
AW: Formular in ein Fenster eine Fremdapplikation einfügen
@x2ph
Wenn es das ist was du wissen willst, dann würde ich behaupten, dass das tagtäglich jeder Bildschirmschoner so macht, wenn man unter Eigenschaften auf Vorschau geht. Hier ein Auszug aus einem meiner Bildschirmschonerprogramme:
Delphi-Quellcode:
GetWindowRect(ParentWnd, Rec);
Form.SetBounds(0, 0, Rec.Right - Rec.Left, Rec.Bottom - Rec.Top); Windows.SetParent(Form.Handle, ParentWnd); |
AW: Formular in ein Fenster eine Fremdapplikation einfügen
Erstmal Danke für eure Überlegungen und Ideen.
Ich werde jetzt etwas damit experimentieren und hier berichten. |
AW: Formular in ein Fenster eine Fremdapplikation einfügen
Zitat:
Dein Ansatz funktioniert, sogar besser als gehofft. Ich kann so ein Form erzeugen und in einem bestehenden Fenster als SubWIndow einfügen. Dabei funktioniert das Form immer noch genauso wie gewünscht. Ziemlich cool das ganze! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 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