Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   3 Monitore. Delphi soll aber nur auf einem bestimmten ausgeführt werden (https://www.delphipraxis.net/210032-3-monitore-delphi-soll-aber-nur-auf-einem-bestimmten-ausgefuehrt-werden.html)

Nine9 19. Feb 2022 13:05

3 Monitore. Delphi soll aber nur auf einem bestimmten ausgeführt werden
 
Guten Tag sehr geehrte Community wie immer bin ich auf der Suche nach ein paar hilfreichen Antworten.

Bisher habe ich meine Programme immer mit Form.Borderstyle := BsNone;
und z.b left := screen.desktopLeft; ausgeführt. Mit 2 Bildschirmen kein Problem.
Nun habe ich 3 und ich möchte aber dass das Programm beim ausführen den Monitor nimmt auf dem ich Delphi offen habe und Debugge.
Leider kommt er mir immer auf den ersten ganz links was auch mit screen.desktopleft sich logisch erklären lässt.
Aber wie kann ich ihm anweisen das er auf diesen Monitor sich konzentrieren soll wo ich delphi habe und Ihn darauf ausführe

Über jede Idee wäre ich sehr Dankbar.

Freundliche Grüße

Nine9 19. Feb 2022 13:10

AW: 3 Monitore. Delphi soll aber nur auf einem bestimmten ausgeführt werden
 
Habs herausgefunden ^^ mit screen.Monitors[0].left;

stahli 19. Feb 2022 16:05

AW: 3 Monitore. Delphi soll aber nur auf einem bestimmten ausgeführt werden
 
Eine Option kann auch sein, die Position beim Schließen in einer Ini zu speichern und beim nächsten Start wieder zu laden. So kannst Du jederzeit leicht eine neue Position festlegen.

Funktioniert für mich super.

Delphi-Quellcode:
  procedure TFormX.LoadIni;
  var
    IniFile: TIniFile;
  begin
    try
      IniFile    := TIniFile.Create(ExtractFilePath(ParamStr(0)) + IniFileName);
      WindowState := wsNormal;
      Position   := poDesigned;
      Top        := IniFile.ReadInteger(IniFileName, 'Top', Top);
      Left       := IniFile.ReadInteger(IniFileName, 'Left', Left);
      Width      := IniFile.ReadInteger(IniFileName, 'Width', Width);
      Height     := IniFile.ReadInteger(IniFileName, 'Height', Height);
    finally
      FreeAndNil(IniFile);
    end;
  end;

  procedure TFormX.SaveIni;
  var
    IniFile: TIniFile;
  begin
    try
      IniFile := TIniFile.Create(ExtractFilePath(ParamStr(0)) + IniFileName);
      IniFile.WriteInteger(IniFileName, 'Top', Top);
      IniFile.WriteInteger(IniFileName, 'Left', Left);
      IniFile.WriteInteger(IniFileName, 'Width', Width);
      IniFile.WriteInteger(IniFileName, 'Height', Height);
    finally
      FreeAndNil(IniFile);
    end;
  end;

  procedure TFormX.FormCreate(Sender: TObject);
  begin
    LoadIni;
  end;
...

  procedure TFormX.FormClose(Sender: TObject; var Action: TCloseAction);
  begin
    SaveIni;
  end;

Aviator 19. Feb 2022 22:42

AW: 3 Monitore. Delphi soll aber nur auf einem bestimmten ausgeführt werden
 
Bitte das
Delphi-Quellcode:
TIniFile.Create()
vor den
Delphi-Quellcode:
try ... finally
Block setzen. Ansonsten könnte es passieren, dass der Aufruf von
Delphi-Quellcode:
Create()
nicht funktioniert und dein
Delphi-Quellcode:
finally
Abschnitt ebenfalls aufgrund einer ungültigen Instanz bzw. eines ungültigen Zeigers crashed.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz