Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   mal wieder 'ne Uhr (https://www.delphipraxis.net/188605-mal-wieder-ne-uhr.html)

markus5766h 21. Mär 2016 16:56

AW: mal wieder 'ne Uhr
 
. . . kann man so machen, aber ist IMHO nicht das, was ich mit Delphi erreichen will.
Wenn ich zur Entwurfszeit TImages mit einer festen Breite und Höhe - und einer Bitmap drin - erstelle,
dann möchte ich das auch so zur Laufzeit sehen - keinesfalls aber an anderer Position oder / und mit anderer Größe.
Mal weiter gedacht : wenn ich das mit allen visuellen Komponenten machen soll - tipp ich mir 'nen Wolf.
Das Formular hat eine feste Größe, also sollte sich da auch nichts ändern!

bcvs 21. Mär 2016 17:01

AW: mal wieder 'ne Uhr
 
Da schlägt die Skalierung von Windows zu.

Ich konnte hier folgendes nachvollzieren:

Win7:
Bildschirmskalierung 125% : Bitmaps verschoben
Bildschirmskalierung 100% : Bitmaps OK

Win10:
DClock.exe original
alle Bildschirmauflösungen OK, Bitmaps verden skaliert

Dann habe ich unter Win 10 mein DPI-Aware-Maifest hinzugefügt (mit D2007) und dann waren die Bitmaps bei 125% wieder verschoben. Seltsamerweise bei 100% dann auch, wobei da auch das Popup-Menü vergrößert war. Windowes merkt sich hier anscheinend irgendeine Skalierungs-Einstellung.

Vielleicht haben neuere Delphi-Versionen von Haus aus dieses DPI-Aware-Mainfest drin, so dass es zu diesen unterschiedlichen Beobachtungen kommt.

Setzt mal einfach
Delphi-Quellcode:
Scaled:=false
; dann müsste es besser aussehen.

nahpets 21. Mär 2016 17:14

AW: mal wieder 'ne Uhr
 
Zitat:

Zitat von markus5766h
... kann man so machen, aber ist IMHO nicht das, was ich mit Delphi erreichen will.
Wenn ich zur Entwurfszeit TImages mit einer festen Breite und Höhe - und einer Bitmap drin - erstelle,
dann möchte ich das auch so zur Laufzeit sehen - keinesfalls aber an anderer Position oder / und mit anderer Größe.
Mal weiter gedacht : wenn ich das mit allen visuellen Komponenten machen soll - tipp ich mir 'nen Wolf.
Das Formular hat eine feste Größe, also sollte sich da auch nichts ändern!

Nein, so ganz stimmt das nicht.

Wenn ich möchte, dass alles passend oben, rechts, links, unten ist, dann arbeite ich mit Align. Dann ist es auch egal, ob der Anwender die gleiche Auflösung, die gleiche Schriftgröße, Skalierung... hat, wie ich, zur Zeit der Entwicklung, oder eben nicht.

Eigentlich gehört das obere Bild auf ein Panel, ebenso das untere auf ein anderes. Die "Ziffernreihe" gehört ebenfalls auf ein Panel. Alle Bilder bekommen dann Align := alLeft und schon befinden sie sich schön nebeneinander und eine veränderte Breite ist wurscht.

Das Grundsätzliche Problem liegt hier (vermutlich) auch nicht bei Delphi.

Habe die Sourcen auf Platte gespeichert, ausgepackt, mit Delphi geöffnet und F9 gedrückt.

Anschließend habe ich die Uhr korrekt angezeigt bekommen. Bei meiner Delphiversion und der Windowskonfiguration scheint es also zu klappen.

Wenn jemand anderes aber die Exe aus dem Forum geholt hat, und die dann startet und anschließend die Optik zerschossen ist, so liegt das nicht an Delphi.
Bei mir hat auch die Exe aus dem Forum einwandfrei ausgesehen.

HolgerX 21. Mär 2016 18:53

AW: mal wieder 'ne Uhr
 
Hmm..

Also war meine Vermutung mit dem Scaling nicht ganz verkehrt..

Das die Bitmaps in den Images geblieben sind wie sie sollen, ist schon mal beruhigend.
Das durch das Scaling die Position und Größe der Controls beim Öffnen der Form verändert wird ist da schon ärgerlich.

Deshalb alles mit 100% entwickeln. ;)

Es war in Vergangenheit auch aufgefallen, wenn eine Form auf WinXP designt wurde und diese dann auf Win7 geöffnet wurde, dann haben sich auch diverse Positionen leicht verändert.

Fazit:
Nutze nur ein Image für deine Uhr und male darauf den Hintergrund und die Zahlen absolut, dann kann Windows vergrößern was will, wenn das Image AutoSize hat, passt es sich am TBitmap an ;)

markus5766h 22. Mär 2016 09:25

AW: mal wieder 'ne Uhr
 
... ja, das mit dem Scaling ist mir vorher nie aufgefallen,
nutze immer eine Scalierung von 100 %

Rar-Archiv im ersten Post aktualisiert, scaled = False

Neutral General 22. Mär 2016 10:01

AW: mal wieder 'ne Uhr
 
Zitat:

Zitat von markus5766h (Beitrag 1333514)
... ja, das mit dem Scaling ist mir vorher nie aufgefallen,
nutze immer eine Scalierung von 100 %

Rar-Archiv im ersten Post aktualisiert, scaled = False

Hat für mich nichts geändert. Der Abstand ist in der exe drin.

bcvs 22. Mär 2016 11:20

AW: mal wieder 'ne Uhr
 
Die neue Exe funktioniert ist mir unter Win10 in allen Auflösungen OK.

Unter Win7 mit 125% sind die Bitmaps auseinandergerissen.

Wenn ich es aber mit D2007 selbst kompiliere und Scaled auf false setze, ist alles OK.

markus5766h 22. Mär 2016 19:35

AW: mal wieder 'ne Uhr
 
Liste der Anhänge anzeigen (Anzahl: 3)
... wie schon angesprochen, ist das Neuzeichnen ganzer Bitmaps nicht so das Wahre . . . (war ja auch nur mal auf die Schnelle).
Mit angehängtem Programm lässt sich ein Array[0..127, 1..48] erstellen,
welches für die Ordinalwerte 0 bis 127 dann das entsprechende Zeichen in einer Matrix von 6*8 Punkten darstellt.
Das Array kann gespeichert oder in die Zwischenablage kopiert werden, um es dann in einer Unit unter CONST einzufügen.
Die Matrix wird einfach durch Klick auf die entsprechenden Punkte erstellt und kann dann im Array gespeichert werden.
Für die Vorschau (zeige Zeichentabelle) wird eine Auflösung von 1600 * 900 px benötigt.
Im Archiv sind die Bitmap-Sourcen enthalten.
Die Vorschau arbeitet in einem Raster von 10px*10px, die Ursprungs-Led's haben 16px * 16px.
In der Datei Matrix_2.txt sind schon einige Zeichen definiert, können aber überschrieben werden.
Die Dateien "LED_SW_10px.bmp" und "LED_GN_10px.bmp" werden vom Programm geladen !


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:18 Uhr.
Seite 3 von 3     123   

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