Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#32

AW: Probleme mit Bildschirmschonervorschau

  Alt 26. Mai 2012, 11:43
Mit einem Fenster für alle Modi ist auch nicht so wild, man muß es nur richtig vorbereiten und auf paar Punkte achten.

Als erstens ist die Abfrage Art wie if AnsiStartsText('/P',ParamStr(1)) then Quatsch, sie ist nicht falsch, aber nicht effektiv. Effektiver ist die Parameter zuerst separat auszuwerten, wie z. B.

Delphi-Quellcode:
const
  ssmConfigure = 1; { Dialog 'Einstellungen' }
  ssmFullScreen = 2; { Vollbildmodus }
  ssmPreview = 3; { Vorschau }
  ssmPassword = 4; { Dialog 'Passwort setzen' }
  ssmInstall = 5; { Installieren }

var
  ssMode: Byte;

...

    case Param1[1] of
    'C': Result := ssmConfigure; { Dialog 'Einstellungen' }
    'S': Result := ssmFullScreen; { Vollbildmodus }
    'P': Result := ssmPreview; { Vorschau }
...
Danach arbeitest du nur noch mit der globalen variable ssMode. In einem ein Fenster ScreenSaver reagierst du dann auf if ssMode = ssmFullScreen oder if ssMode = ssmPreview usw. Je nach ssMode reagierst du unterschiedlich. Ist es ssmFullScreen, arbeitet es wie ein ScreenSaver, ist es ssmPreview, abereitet es wie ein Programm, d. h. Tastendruck beendet das Programm nicht usw.

Dann solltest du soweit es geht alles was geht in zwei Funktionen packen für ScreenSaver begin und end, d. h. bestimmte Screensaver Funktionen sollten nicht unkontrolliert in einer normalen Prozedur behandelt werden, sondern in separaten eigenen Funktionen. Damit kannst du je nach ssMode sie aufrufen oder nicht.
  Mit Zitat antworten Zitat