![]() |
mal wieder 'ne Uhr
Liste der Anhänge anzeigen (Anzahl: 5)
Moin aus Hamburg,
ich hatte mal gerad' ein wenig Zeit und war der Meinung, mein Desktop könnte mal wieder eine neue Uhr gebrauchen. Im Anhang das Programm als RAR-Archiv, eine Vorschau und die Parameter als Textdatei. Es wird keine Ini-Datei benötigt, alle Einstellungen werden über Start-Parameter mitgegeben, siehe Anhang --> Parameter.txt ohne Startparameter oder gültige Start-Parameter startet die Uhr wie folgt : Position, Left=0, Top=0 auf aktuellem Desktop, Verschieben per Mouse deaktiviert, Farbe = 1 (grün) vielleicht kann sie ja der Eine oder Andere gebrauchen . . . . . . hab' jetzt noch den passenden Hintergrund angehangen : wenn dieser (zugeschnitten) als Hintergrund benutzt - und die Position der Uhr im Raster von 16 px. vorgenommen wird, ist die Uhr optisch im Hintergrund integriert --> siehe Anhang Vorschau_Desktop |
AW: mal wieder 'ne Uhr
Liste der Anhänge anzeigen (Anzahl: 1)
|
AW: mal wieder 'ne Uhr
Moin,
bei mir läuft sie ohne Probleme. Was für ein BS ? . . . wie geht das überhapt ? Form : Border Style := bsNONE BorderICONS := [] Images.AutoSize := False Images.Align := alNONE und trotz dem sind die Images "auseinandergerissen" ? |
AW: mal wieder 'ne Uhr
Schön!
Hast Du mal erwogen den Source zu veröffentlichen? Gruß K-H |
AW: mal wieder 'ne Uhr
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
. . . ich hab' auch noch die Bitmaps drangehangen. Momentan werden diese ja als ganze Ziffer gezeichnet, ich werd' noch die Buchstaben und einige Zeichen generieren, dann kann das Zeichnen der Werte als Matrix erfolgen. |
AW: mal wieder 'ne Uhr
Wie es aussieht ist das Bild in Image10 und Image11 zu kurz und im FormShow machst du das Formular zu klein, wodurch wie schon von einigen gemeldet die Sekundenziffer abgeschnitten wird.
|
AW: mal wieder 'ne Uhr
Zitat:
Image11 : Left : 0, Top : 128, Height : 16, Width : 656 Form: ClientWidth : 656 ClientHeight : 144 nach Adam Riese passt das :gruebel: merkwürdig aus dem Bild in Post 2 ist auch, dass die Images "auseinander gerissen" sind . . . |
AW: mal wieder 'ne Uhr
Liste der Anhänge anzeigen (Anzahl: 1)
Hab dein Projekt geöffnet und es sieht bei mir so aus (siehe Anhang).
Das einzige was ich geändert hab ist, dass ich die Images testweise transparent gemacht habe, aber darum gehts nicht. Das Bild reicht in Image10 und 11 reicht nur bis zur vorletzten Ziffer und du schneidest im FormShow auch an der roten Linie ab, weswegen zur Laufzeit die letzte Ziffer nicht zu sehen ist. |
AW: mal wieder 'ne Uhr
Liste der Anhänge anzeigen (Anzahl: 1)
Die Bitmaps in den Images haben die korrekte Größe,
die TImages sind nach dem Öffnen wohl vergrößert, warum auch immer . . .:gruebel: Das kann ich nicht nachvollziehen, auch nicht mit den heruntergeladenen Archiven --> siehe Anhang : Archiv runtergeladen, in Delphi geöffnet, keine Sizing-Probleme |
AW: mal wieder 'ne Uhr
Hmm..
mit der hochgeladenen Version passt das mit der Breite bei mir, habe hier nur die fixe Breite und Höhe ersetzt:
Delphi-Quellcode:
Kann das mit der ImageList in Verbindung mit der Skalierung unter Windows zusammenhängen?
frmMain.ClientWidth := Image11.Width;
frmMain.ClientHeight := Image11.Height + Image11.Top; Verbesserungsvorschläge: ;) Ich würde nur die Ziffern austauschen/neuzeichnen, welche sich seit der letzten Aktualisierung 'wirklich' verändert haben, dadurch flackert es nicht so. Auch würde ich für den Hintergrund nicht mehrere einzelne Images nutzen, sondern eines, welches zu Begin einmal komplett mit den Dots gemalt wird. Auch würde ich die Zahlen nicht komplett aus einer Image-List holen, sondern diese als Matrix mit einem 'Dot'-Image (eins je Farbe + Hintergrund) zusammen malen ;) Hier bräuchte man sogar nur die Dots zu malen, welche sich ändern. |
AW: mal wieder 'ne Uhr
Zitat:
Das ist kein Laufzeitfehler. Dein Formular IST so gebaut. Die Image-Komponenten sind zu groß bzw. zu weit auseinander. Mit deinem hochgeladenen Code/Formular KANN nicht das herauskommen was du oben auf deinen Screenshots zeigst! |
AW: mal wieder 'ne Uhr
Zitat:
|
AW: mal wieder 'ne Uhr
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Habe eine 100% Skalierung in Windows eingestellt. Edit: Auch mit einer 125% Skalierung (laut Windows Standard) sieht es bei mir immer noch aus wie im Anhang abgebildet. |
AW: mal wieder 'ne Uhr
Zitat:
Da kann ich ja noch etwas lernen. (und wenn wie hier diskutiert ein Fehler drin steckt, dann erst recht!) Gruß K-H |
AW: mal wieder 'ne Uhr
Hmm..
@Neutral General Bei mir mit Delphi6 sieht es aus wie es soll.. Keine Lücken zwischen den Images und die Größen passen.. Somit kann zumindest ich hier nicht weiterhelfen, was zum Verschieben der Images oder Verkleinern der angezeigten itmaps führt.. ;) |
AW: mal wieder 'ne Uhr
Hab' mir eben noch mal die *.dfm angesehen :
die Images sind da, wo sie hin gehören, lässt sich leicht nachrechnen. |
AW: mal wieder 'ne Uhr
Zitat:
Zitat:
Zitat:
Und diese Lücke ist auch sowohl im Form-Designer als auch zur Laufzeit deutlich zu sehen wie du auf den Screenshots hier sehen kannst. Es KANN so also gar nicht stimmen. Benutze zum Testen Windows 7 und Delphi 7. Windows-Skalierung: 100% EDIT: Okay ich muss das ein oder andere zurücknehmen. Wenn ich deinen Code runterlade hat img1 eine Breite von 80 Pixeln (statt 98) und img1.Left ist 18 und nicht 20. Sobald ich das Projekt aber in Delphi 7 öffne steht Left = 20 und Width = 98 drin. :gruebel: |
AW: mal wieder 'ne Uhr
Zitat:
in den Abmessungen 16*16 Pixel war. |
AW: mal wieder 'ne Uhr
Zitat:
Also der Code ist scheinbar tatsächlich so in Ordnung, aber Delphi machts aus irgendeinem Grund kaputt. Sowas hatte ich noch nie. Wie kommt mein Delphi darauf, aus Left=16 und Width=80, Left=20 und Width=98 zu machen? :shock: |
AW: mal wieder 'ne Uhr
Habe das Programm mit Delphi 7 geöffnet, kompiliert: passt.
Aber trotzdem hab' ich mal am Quelltext was geändert, damit zur Laufzeit die Bilder positioniert werden können. Damit könnten dann eventuelle Bildgrößenänderungen (die von wem auch immer da reingewuselt werden) zu einer neuen Positionierung führen, so das hoffentlich) am Ende doch alles passt.
Delphi-Quellcode:
procedure TfrmMain.FormShow(Sender: TObject);
var hwndOwner: HWnd; begin hwndOwner := GetWindow(Handle, GW_OWNER); ShowWindow(hwndOwner, SW_HIDE); Application.Icon := frmMain.Icon; if sLeft <> -99999 then frmMain.Left := sLeft; if sTop <> -99999 then frmmain.Top := sTop; Image8.Left := 0; img1.Left := Image8.Left + Image8.Width; Image1.Left := img1.left + img1.Width; img2.Left := Image1.Left + Image1.Width; Image2.Left := img2.Left + img2.Width; dp1.Left := Image2.Left + Image2.Width; Image3.Left := dp1.Left + dp1.Width; img3.Left := Image3.Left + Image3.Width; Image4.Left := img3.Left + img3.Width; img4.Left := Image4.Left + Image4.Width; Image5.Left := img4.Left + img4.Width; dp2.Left := Image5.Left + Image5.Width; Image6.Left := dp2.Left + dp2.Width; img5.Left := Image6.Left + Image6.Width; Image7.Left := img5.Left + img5.Width; img6.Left := Image7.Left + Image7.Width; Image9.Left := img6.Left + img6.Width; Image10.Top := 0; Image8.Top := Image10.Top + Image10.Height; img1.Top := Image8.Top; Image1.Top := Image8.Top; img2.Top := Image8.Top; Image2.Top := Image8.Top; dp1.Top := Image8.Top; Image3.Top := Image8.Top; img3.Top := Image8.Top; Image4.Top := Image8.Top; img4.Top := Image8.Top; Image5.Top := Image8.Top; dp2.Top := Image8.Top; Image6.Top := Image8.Top; img5.Top := Image8.Top; Image7.Top := Image8.Top; img6.Top := Image8.Top; Image9.Top := Image8.Top; Image11.Top := Image8.Top + Image8.Height; frmMain.ClientWidth := Image11.Width; frmMain.ClientHeight := Image11.Height + Image11.Top; ChangeDP(DColor); Timer1Timer(Self); end; |
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! |
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:
; dann müsste es besser aussehen.
Scaled:=false
|
AW: mal wieder 'ne Uhr
Zitat:
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. |
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 ;) |
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 |
AW: mal wieder 'ne Uhr
Zitat:
|
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. |
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 02: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