![]() |
AW: Form in Service rendern
:wall: da sieht man den Wald vor lauter Bäumen manchmal nicht.
Ihr habt mich auf genau die richtige Idee gebracht, vielen Dank! :thumb: Meine Lösung verwendet die PaintTo-Methode eines TForm (das ist die Methode, an die man immer nicht denkt...):
Delphi-Quellcode:
Funktioniert tadellos auch in einem Service. Ich habs zwar zum Test nur mit was ganz einfachem probiert, aber ich bin mir eigentlich ziemlich sicher, dass der Rest auch gehen sollte...
procedure TDisplayService.PaintForm;
var Bitmap: TBitmap; begin Bitmap := TBitmap.Create; Bitmap.Width := DisplayForm.ClientWidth; Bitmap.Height := DisplayForm.ClientHeight; DisplayForm.PaintTo(Bitmap.Canvas, 0, 0); // hier kann das Bitmap jetzt komprimiert/verschickt/whatever werden Bitmap.Free; end; Die Funktion PaintTo rufe ich jedes mal auf, wenn sich was auf der Anzeige ändert (neue Werte, Uhrzeit etc.). Dann kann ich mich jetz an die "echten" Probleme machen... Danke euch, viele Grüße Stephan |
AW: Form in Service rendern
Schön das es funktioniert. :thumb:
Das PaintTo... war auch meine erste Idee, aber ... Ich hätte gewettet das es so ohne Weiteres keinen sinnvollen Canvas-Handle im Service gibt, oder das die PaintTo Routinen doch intern irgendeine Windows-Funktion aufrufen die dann crasht. Hat vielleicht jemand eine gute Erklärung warum das anscheinend doch funktioniert ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 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