AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Fensterposition sowie -größe auf zweitem Monitor speichern und laden
Thema durchsuchen
Ansicht
Themen-Optionen

Fensterposition sowie -größe auf zweitem Monitor speichern und laden

Ein Thema von günni0 · begonnen am 19. Apr 2018 · letzter Beitrag vom 23. Apr 2018
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

AW: Fensterposition sowie -größe auf zweitem Monitor speichern und laden

  Alt 19. Apr 2018, 11:52
Das heißt ich speichere aktuell falsch. Aktuell speichere ich einfach nur X und Y vom "Monitor" und achte gar nicht drauf welcher.
Ich würde einfach X und Y vom Fenster speichern. Diese Koordinaten beziehen sich eh auf den kompletten Desktop. Also links vom primären Bildschirm sind die (X-)Koordinaten negativ.

Edit:
Du hast grade editiert. So wie du es machst, sollte es "automatisch" schon passen
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#2

AW: Fensterposition sowie -größe auf zweitem Monitor speichern und laden

  Alt 19. Apr 2018, 11:57
Leider nicht. Ich speichere X, Y Höhe und Breite ganz normal.

Beim Laden gehe ich so vor

Delphi-Quellcode:
  _Screen := Screen.MonitorFromWindow(frmMain.Handle);
  
  if IniFrm.ValueExists('window_options', 'x') and IniFrm.ValueExists('window_options', 'y') then
   begin
    x := IniFrm.ReadInteger('window_options', 'x', (_Screen.Width - frmOptions.Width) div 2);
    y := IniFrm.ReadInteger('window_options', 'y', (_Screen.Height - frmOptions.Height) div 2);
   end
  else
   begin
    x := (_Screen.Width - frmOptions.Width) div 2;
    y := (_Screen.Height - frmOptions.Height) div 2;
   end;

  frmOptions.Left := x;
  frmOptions.Top := y;
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: Fensterposition sowie -größe auf zweitem Monitor speichern und laden

  Alt 19. Apr 2018, 11:58
Lass das ganze Gedöhns mit dem Screen einfach weg Einfach nur X, Y, Width, Height speichern und 1 zu 1 wieder laden. Auf dem richtigen Monitor landet das Fenster dann automatisch.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#4

AW: Fensterposition sowie -größe auf zweitem Monitor speichern und laden

  Alt 19. Apr 2018, 11:59
Zitat:
Einfach nur X, Y, Width, Height speichern und 1 zu 1 wieder laden
mache ich doch

Das Screens ist nur für die Ini-Default-Werte da, falls beim Auslesen was nicht klappt.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

AW: Fensterposition sowie -größe auf zweitem Monitor speichern und laden

  Alt 19. Apr 2018, 12:00
Das Screens ist nur für die Ini-Default-Werte da, falls beim Auslesen was nicht klappt.
Mein Fehler, falsch gelesen.

Was genau funktioniert beim Laden denn nicht? Die Positionen sind falsch?
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Jumpy
Online

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: Fensterposition sowie -größe auf zweitem Monitor speichern und laden

  Alt 19. Apr 2018, 12:02
Evtl. könnte man noch speichern, ob das Fenster maximiert ist usw.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.436 Beiträge
 
Delphi 12 Athens
 
#7

AW: Fensterposition sowie -größe auf zweitem Monitor speichern und laden

  Alt 19. Apr 2018, 12:01
Zitat:
Einfach nur X, Y, Width, Height speichern
...und X und Y durch Form.Top und Form.Left ersetzen.
Hinweis:
Das Laden/Setzen der Werte im OnShow.
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#8

AW: Fensterposition sowie -größe auf zweitem Monitor speichern und laden

  Alt 19. Apr 2018, 12:02
Die Position vom Hauptfenster wird wohl korrekt geschrieben (rechter Monitor).
Delphi-Quellcode:
[window_main]
x=2139
y=196
Beim Laden landet es aber auf Monitor 1 (also der linke)

Ich setze Top und Left im OnCreate-Event.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

AW: Fensterposition sowie -größe auf zweitem Monitor speichern und laden

  Alt 19. Apr 2018, 12:03
Also ich hab mir grade mal ein Testprogramm geschrieben und da funktioniert alles wie es soll. Muss ein Problem bei der Verarbeitung (Ini, etc.) vorliegen:
Delphi-Quellcode:
uses
  Clipbrd;

procedure TForm2.Button1Click(Sender: TObject);
var
  S: String;
begin
  S := Left.ToString + ',' + Top.ToString + ',' + Width.ToString + ',' + Height.ToString;
  Clipboard.AsText := S;
end;

procedure TForm2.Button2Click(Sender: TObject);
var
  A: TArray<String>;
begin
  A := Clipboard.AsText.Split([',']);
  Left := A[0].ToInteger;
  Top := A[1].ToInteger;
  Width := A[2].ToInteger;
  Height := A[3].ToInteger;
end;
Edit:
Der Hinweis von haentschman bezüglich OnShow ist wichtig, wenn es sich um das (aktuelle) eigene Fenster handelt.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.645 Beiträge
 
Delphi 12 Athens
 
#10

AW: Fensterposition sowie -größe auf zweitem Monitor speichern und laden

  Alt 19. Apr 2018, 12:43
Ich setze Top und Left im OnCreate-Event.
Dann setz dort doch auch noch Position := poDesigned - vielleicht steht da ja noch was anderes drin.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:49 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-2025 by Thomas Breitkreuz