Einzelnen Beitrag anzeigen

a.def
(Gast)

n/a Beiträge
 
#1

Formular auf zweitem Monitor starten?

  Alt 19. Dez 2016, 10:02
Ich habe jetzt endlich mal meinen zweiten Monitor angeschlossen um eine Funktionalität prüfen zu können.
Leider ging das total in die Hose denn das gewünschte Ergebnis bleibt aus.

In einer Datei sind die Koordinaten meines Formulars gespeichert (es ist in etwa -1600 und 100). Mein Formular war auf dem Monitor LINKS neben meinem Hauptmonitor.

Folgende Funktion sollte nun eigentlich mein Formular auf den zweiten Monitor bringen, tut es aber nicht.
Fast alles was die Ini-Datei angeht habe ich rausgenommen.
Die Variablen X und Y haben am Ende genau die Werte die sie haben sollen nämlich -1600 und 100.
Woran liegt es, dass das Hauptformular frmMain nicht auf dem zweiten Monitor gestartet wird so wie die Variablen X und Y es vorsehen?
loadFOrmPosition rufe ich im FormCreate auf genau so dort Width und Height gesetzt.

Delphi-Quellcode:
procedure loadFormPosition(aFormToSetPos: TForm; sIniSection: string);
var
 x, y: Integer;
 aScreen: TMonitor;
begin
  aScreen := Screen.MonitorFromWindow(frmMain.Handle);
  
  // if IniF.ValueExists(sIniSection, 'posx') and IniF.ValueExists(sIniSection, 'posy') then
  // (alles was die Ini angeht, habe ich der Einfachheit halber rausgenommen)
  // >> Wenn in Ini-Datei die Werte posx und posy vorhanden sind, Position zu poDesigned setzen (verhindert hässliches Flickern unter Windows XP)
   begin
    aFormToSetPos.Position := poDesigned;

    x := IniF.ReadInteger(sIniSection, 'posx', (aScreen.Width - aFormToSetPos.Width) div 2);
    y := IniF.ReadInteger(sIniSection, 'posy', (aScreen.Height - aFormToSetPos.Height) div 2);
   end
  else
   begin
    // Wenn Werte nicht vorhanden, dann zentriere das Formular auf dem Hauptmonitor
    x := (aScreen.Width - aFormToSetPos.Width) div 2;
    y := (aScreen.Height - aFormToSetPos.Height) div 2;
   end;

  aFormToSetPos.Left := x; // -1600
  aFormToSetPos.Top := y; // 100
end;

Geändert von a.def (19. Dez 2016 um 10:24 Uhr)
  Mit Zitat antworten Zitat