Form.Left stimmt meiner Meinung nach nicht

Für sonstige Unterhaltungen, welche nicht direkt mit Lazarus zu tun haben
Antworten
siro
Beiträge: 386
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 10
CPU-Target: 64Bit
Wohnort: Berlin

Form.Left stimmt meiner Meinung nach nicht

Beitrag von siro »

Hallo zusammen,
bedingt durch einen anderen Thread bin ich auf eine Merkwürdigkeit gestossen,
vielleicht liegt das Problem aber bei mir, deshalb wollte ich es nicht in den Bug Thread schreiben,
sondern erstmal hier zur Diskussion stellen:

Die linke Position eines Formulars TForm.left ist -8 wenn sich das Fenster ganz links am Bildschirm befindet.

Das lässt sich ganz leicht ausprobieren:
Einfach Lazarus öffnen und das Standard Formular welches erscheint nehmnen und den linken Rand nach ganz links vom Bildschirm schieben.
Im Objektinspektor den Eintrag "left" beobachten.

Oder einfach mal den Wert left im Objektinspektor auf 0 setzen,
das Fenster ist dann 8 Pixel zu weit rechts.

Nächster Versuch: zur Laufzeit
Ich habe dann WindowState auf wsMaximized gesetzt, das funktioniert auch einwandfrei, Fenster hat volle Größe
doch folgende Aktion zeigt mir dass Left nun auf -8 steht

Code: Alles auswählen

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  caption:=IntToStr(Form1.left)// ist -8
end;       


Woran könnte das denn liegen ?
Ich hab das mit 2 verschiedenen Lazarus Versionen probiert:

Mein Betriebssystem ist Windows 10, 64 Bit.
Lazarus 1.8.4
Lazarus 2.0.4

Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4138
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Form.Left stimmt meiner Meinung nach nicht

Beitrag von af0815 »

Ich würde sagen es ist der Unterschied der Koordinatensysteme.

Ein Fernster auf einen 2ten Monitor hat noch viel schlimmere Koordinaten, je nachdem wo der 2te Monitor in Relation zum ersten Monitor steht. BTW: Manche Programme die die vermeintlichen Koordinaten speichern und dann nimmt man den Laptop aus dem Docking können einen ganz schön zur Verzweiflung bringen.

Deshalb. soweit es möglich ist, den Windowstate oder ähnliche Funktionen nutzen. Ja nicht die Koordinaten selbst verwenden, das habe ich bereits (bitter) gelernt. Wenn, dann versuch innerhalb der Koordinaten des Hauptfensters zu bleiben in der Laufzeit. Multimonitor und die Unterschiede bei den BS in der Berechnung der Basis können einem die Hölle auf Erden bescheren ( bereits ausprobiert :-) waren ja nur ein paar Stunden flucherei ).
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

siro
Beiträge: 386
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 10
CPU-Target: 64Bit
Wohnort: Berlin

Re: Form.Left stimmt meiner Meinung nach nicht

Beitrag von siro »

Das nenne ich einen berechtigten Einwand.
Ich hab das grad mal mit 2 Monitoren probiert.
Wobei auch hier der Wert 1920 (das ist meine Monitoraulösung horizontal) das Fenster 8 Pixel im zweiten Monitor zu weit rechts darstellt.
Okay, solche festen Koordinaten für das Hauptfenster sollte man wirklich nicht verwenden, gebe ich Dir völlig recht.
Innerhalb des Fensters im Clientbereich stimmts ja dann alles wieder.
Trotzdem etwas erstaunlich wo die 8 Pixel herkommen.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

wp_xyz
Beiträge: 3249
Registriert: Fr 8. Apr 2011, 09:01

Re: Form.Left stimmt meiner Meinung nach nicht

Beitrag von wp_xyz »

Delphi macht das auch so. Ich denke, das liegt an Windows 10. Bei Windows 7 hatten die Fenster einen - ich meine - 8 Pixel breiten Rahmen. Der ist bei Win 10 weggefallen und wurde durch eine 1-Pixel breite Linie ersetzt, der Rest is transparent. Siehe dazu auch https://stackoverflow.com/questions/424 ... 7/42491227.

siro
Beiträge: 386
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 10
CPU-Target: 64Bit
Wohnort: Berlin

Re: Form.Left stimmt meiner Meinung nach nicht

Beitrag von siro »

Okay, danke Dir wp_xyz. Das scheint also ein Windows 10 Phänomen zu sein, ich dachte mir schon sowas.
Schön finde ich das nicht, aber was ist schon schön an Windows :lol:
Also kein Bug, zunindest nicht von Lazarus somit lag ich schon richtig es zu diskutieren.
Danke euch
Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Antworten