AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Form in Service rendern

Ein Thema von BambinatorXE · begonnen am 18. Jun 2019 · letzter Beitrag vom 10. Jul 2019
Antwort Antwort
gast2019
(Gast)

n/a Beiträge
 
#1

AW: Form in Service rendern

  Alt 19. Jun 2019, 05:10
Vorweg: von Services/Diensten habe ich null Ahnung.

Falls der Service das Formular anzeigen könnte, das Formular z.B. bei Left := -5000;
(also zwei Meter links vom Monitor) anzeigen lassen und das Formular sich timergesteuert als Bitmap abspeichern lassen.

Zwei Meter links vom Monitor ist ja quasi auch unsichtbar. Nur so als Idee...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Form in Service rendern

  Alt 19. Jun 2019, 06:15
Warum sollte das tun? Den Desktop eines Dienstes bekommt eh kein Benutzer zu sehen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Form in Service rendern

  Alt 19. Jun 2019, 07:07
Hallo,
ich würde "einfach" eine Html-Seite erzeugen.
Das sollte nicht ganz so aufwendig sein, wie eine Bitmap.
Heiko
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.008 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Form in Service rendern

  Alt 19. Jun 2019, 07:41
HTML verwenden wäre auch mein Kompromiss - da muss man die Oberfläche zwar neu gestalten, aber es gibt spätestens mit HTML5 und JavaScript für visuell ansprechende Oberflächen (die auch skalieren auf unterschiedliche Biildschirmauflösungen) gute Lösungen, viele als open source. Diagramme, sogar mit interaktiven Elementen, zu gestalten ist damit möglich und wenig bis mäßiger Aufwand. Und man benötigt clientseitig nur einen HTML-Client.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
pesi

Registriert seit: 29. Aug 2003
Ort: 36217 Ronshausen
117 Beiträge
 
Delphi XE5 Professional
 
#5

AW: Form in Service rendern

  Alt 19. Jun 2019, 08:32
Hmmm.... denke ich zu einfach? (was das Generieren eines "Screenshots" angeht)

Delphi-Quellcode:
I:=TBitmap.Create;
Bild:=TJPEGImage.Create;
I:=StatistikFORM.GetFormImage;
Bild.assign(I);
Bild.savetofile(Bla.jpg');
Das hat auf jeden Fall bei mir lange und gut funktioniert.
Die Anwendung war zwar kein Service sondern wurde als geplanter Task aufgerufen, aber auch dann ist ja die ganze Anwendung nicht sichtbar. Könnte daher doch auch bei einem Service funktionieren, oder???
  Mit Zitat antworten Zitat
BambinatorXE

Registriert seit: 18. Jun 2019
3 Beiträge
 
#6

AW: Form in Service rendern

  Alt 9. Jul 2019, 23:37
da sieht man den Wald vor lauter Bäumen manchmal nicht.
Ihr habt mich auf genau die richtige Idee gebracht, vielen Dank!

Meine Lösung verwendet die PaintTo-Methode eines TForm (das ist die Methode, an die man immer nicht denkt...):
Delphi-Quellcode:
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;
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...
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
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.161 Beiträge
 
Delphi 12 Athens
 
#7

AW: Form in Service rendern

  Alt 10. Jul 2019, 07:39
Schön das es funktioniert.
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 ?
  Mit Zitat antworten Zitat
gast2019
(Gast)

n/a Beiträge
 
#8

AW: Form in Service rendern

  Alt 19. Jun 2019, 07:37
Meine Idee (falls verwirklichbar) umschifft das Rendern einer "unsichtbaren" Form durch das Rendern einer sichtbaren Form außerhalb des Sichtfeldes.

Das Formular speichert sich mit 1fps timergesteuert als Bitmap und der Dienst verteilt das gespeicherte Bitmap weiter.

Falls das geht. Und wie schon gesagt, ich habe von Services/Diensten keine Ahnung.

Aber mein Vorschlag dürfte etwas einfacher sein als #2 "Zeichne doch direkt auf das Bitmap.".
Auf das Bitmap von was denn? Irgendwoher muß das Bitmap doch kommen...

Der TE wollte erstmal Hirnschmalz, keine Nörgeleien darüber, was man auf dem "Desktop eines Dienstes" überhaupt sieht.

Muss man hier - seit wann - die Sinnfrage #5 "Warum sollte das tun?" eigentlich immer stellen?

Für #5 "Warum sollte das tun?" kaufe ich ein "man" bei der nächsten hippen+ultracoolen Gameshow im TV
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:00 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 by Thomas Breitkreuz