Die Vorschauschleife ist dort genauso gelöst wie weiter oben von mir hier veröffentlicht, danke!
Die eigentliche Zeichenfunktion lagerte ich in eine Prozedur aus:
Delphi-Quellcode:
procedure Ausgabe(canvas:TCanvas;x,y:word);
begin
//Quellcode für den Bildschirmschoner
end;
die so
while IsWindowVisible(DemoWnd) do Ausgabe(MyCanvas,scrWidth,scrHeight);
aufgerufen wird, das klappt soweit auch. x und y sind dabei natürlich die Abmessungen des Canvas, somit weiß die Prozedur, in welche Fläche (Ausdehnung derselben) sie zu zeichnen hat.
Nun wollte ich diesselbe Prozedur ja nicht nur für die Schonervorschau, sondern auch für das eigentliche Bildschirmschonen benutzen, deshalb ja die Prozedur. Doch der Aufruf vom als SaverScreen titulierten Formular
Ausgabe(SaverScreen.Canvas,SaverScreen.Width,SaverScreen.Height)
klappt natürlich nicht (wäre ja auch zu schön gewesen), es findet keine Ausgabe statt. Die Prozdur wird natürlich aufgerufen, das war das erste, was ich prüfte. Irgendetwas stimmt mit der Übergabe nicht. Ich probierte es schon mit Pointer, mit der Kreierung eines eigenen Canvas, dem ich das
Handle des ScaverScreens respektive seines Canvas' zuwies, doch es tut sich einfach nichts, bis auf einmal, als wenigstens die Meldung kam, daß die Fläche kein Zeichnen erlaubt.
Wie bekommt man dieser Prozedur mitgeteilt, daß sie diesmal auf das Canvas des Schonerformulares zeichnen soll?
Edit: Die Übergabe des Canvas' klappt doch, der Fehler liegt woanders...
Edit 2: Fehler gefunden.