Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Programm für verschiedene Fensterdesigns anpassen
Xabitire - Di 06.01.09 17:07
Titel: Programm für verschiedene Fensterdesigns anpassen
Hi Leute,
wer kennt das Problem nicht! Man hat gerade eine ordentlich aussehende Programmoberfläche für sein Programm zusammengebastelt und programmiert z.B unter Vista mit eingeschaltetem Aero-Design! Jetzt kommt man an einen anderen PC mit z.B. XP, wo nur das Standard-XP-Design aktivirt ist! Und schon stimmen der untere und der rechte Rand nicht mehr so, wie sie eigentlich sollen! :(
Das liegt natürlich daran, dass verschiedene Designs aktiviert sind! Und da ich keine Lust hab bei jedem Projekt, bei jedem Form, das Aussehen immer wieder manuell anzupassen, hab ich mir überlegt, eine Funktion zu schreiben, die beim Programmstart die Werte korrigiert und alles ist wieder in Butter! :wink:
Hat auch soweit ganz gut geklappt, einziges Problem ist, das wenn auf meinem Form eine Komponente liegt, wo die Anchors-Werte nicht wie beim Standart so eingestell sind:
Quelltext
1: 2: 3: 4:
| akLeft = True akTop = True akRight = False akBottom = False |
sondern z.B. genau umgekehrt, gibt es wieder unterschiede, da das ganze scheinbar am Formrand und nicht am Rand der Programmoberfläche ausgerichtet wird. :?!?:
Daher die Frage, ob vielleicht jemand eine einfache Lösung kennt, um diesen Effekt zu umgehen oder viellecht eine Idee hat wie ich das in meine Funktion einbauen könnte, dass die Absände bei jeder Componente wieder korriegiert werden? :gruebel:
MFG Blackbird8690
jaenicke - Di 06.01.09 17:13
Titel: Re: Programm für verschiedene Fensterdesigns anpassen
Xabitire hat folgendes geschrieben : |
| wer kennt das Problem nicht! Man hat gerade eine ordentlich aussehende Programmoberfläche für sein Programm zusammengebastelt und programmiert z.B unter Vista mit eingeschaltetem Aero-Design! Jetzt kommt man an einen anderen PC mit z.B. XP, wo nur das Standard-XP-Design aktivirt ist! Und schon stimmen der untere und der rechte Rand nicht mehr so, wie sie eigentlich sollen! :( |
Hmm, das ist mir bei meiner Software noch nie aufgefallen, das muss ich mal ausprobieren. :gruebel:
Eigentlich sahen alle meine Programme unter Vista und soweit ich bisher gesehen habe auch Windows 7 genauso aus wie unter XP was das reine Programmfenster angeht. Ich probiere es gleich einmal aus.
Eine mögliche Lösung ist evtl. ClientWidth / ClientHeight selbst zu setzen, denn das sollte unabhängig vom Fensterrand sein.
Xabitire - Di 06.01.09 17:34
Es kann ja auch sein, das dieser Effekt bei neueren Delphi-Versionen nicht mehr auftritt! Da ich zur Zeit allerdings nur Delphi 7 installiert hab kann ich das leider nicht nachprüfen! :gruebel:
jaenicke hat folgendes geschrieben : |
| Eine mögliche Lösung ist evtl. ClientWidth / ClientHeight selbst zu setzen, denn das sollte unabhängig vom Fensterrand sein. |
Das mache ich ja schon, nur bringt das nichts, wenn die Anchors-Werte einer Komponente so wie oben beschrieben gesetzt sind!
Boldar - Do 08.01.09 22:54
Dann setze die Anchors-Werte doch selbst??
Xabitire - Sa 10.01.09 15:42
Das wollte ich eigentlich ja grad vermeiden, da mir dafür der Aufwand-Nutzen-Faktor zu gering ist! Deswegen wollte ich es ja automatisieren! :wink:
Gäbe es nicht irgendwie die Möglichkeit, zu überprüfen, welche Komponenten auf einem Form liegen, dann zu prüfen, ob diese Komponente die wie oben genannte Anchors-Werte besitzten und dann Left- und Top-Werte neu zu setzen!
Ich dachte halt da an einen Algorithmus, der das automatisch macht und ich ihn nur noch zum Programmstart aufrufen muss :?!?:
Ich weis halt nicht, ob es überhaupt möglich ist, daher die Frage! :wink:
jaenicke - Sa 10.01.09 15:56
Ich habe jetzt gesehen was du meinst. Ich habe meine Komponenten normalerweise nicht so frei auf den Formularen platziert, dass das ein Problem gewesen wäre. Ich werde einmal schauen ob ich dafür eine gute Lösung finde, vielleicht steht ja auch etwas in der Quality Central oder so. ;-)
Boldar - Sa 10.01.09 21:54
naja, mit self.components[] kann man alle Kompornenten ermitteln.
Dann könnte man die Werte z.B. aus einer ini lesen.
matze - So 11.01.09 11:57
Kann mal jemand einen Screenshot posten, damit man als externer nachvollziehen kann, wo das Problem liegt?
Xabitire - So 11.01.09 13:12
Hab oben im ersten Post zwei Bilder angehängt! Man kann den Unterschied am Abstand vom Button im unteren Ecken zum Rand deutlich erkennen!
jaenicke - So 11.01.09 14:25
Wenn man es umgekehrt macht und unter XP z.B. ein TEdit erstellt mit dem vorgeschlagenen Standardabstand zum Rand, dann ist unter Vista da gar kein Rand mehr.
Screenshots kann ich später noch anhängen, ich teste das auch unter Windows 7. Und ich habe auch bereits eine Idee wie das zu beheben geht. Die ist nur noch nicht so ideal, funktioniert aber automatisch. ;-)
Xabitire - Do 22.01.09 16:36
jaenicke hat folgendes geschrieben : |
| Und ich habe auch bereits eine Idee wie das zu beheben geht. Die ist nur noch nicht so ideal, funktioniert aber automatisch. ;-) |
Hat sich da jetzt eigentlich noch was getan, oder hats doch nicht so geklappt? :?:
MSCH - Do 22.01.09 19:33
bedenke bei deinen Versuchen auch, dass der Anwender nicht nicht die Designs ändern kann, sondern auch
dass er die Schriftskalierung Hoch bzw. runtersetzen kann.
Ich stand vor dem gleichen Problem und fand eine Lösung bei DevExpress (LayoutControl). Ist zwar nicht für umso,
das teil deckt aber wirklich alle Eventualitäten ab und bietet noch einige Schmankel mehr.
:-)msch
Xabitire - Do 22.01.09 19:51
Danke! :)
Werd mir das mal genauer ansehen! Ich hoffe das Problem ist damit ein für alle mal gelöst und ich kann mich wieder auf den Inhalt meiner Programme konzentrieren :wink:
jaenicke - Do 22.01.09 20:35
Xabitire hat folgendes geschrieben : |
| Hat sich da jetzt eigentlich noch was getan, oder hats doch nicht so geklappt? :?: |
Naja, schon irgendwie, aber verschiedene Schriftarten, Scaled usw. machen das nicht so einfach. Ich hab bisher eine Lösung und jede Menge Sonderfälle, bei denen man es jedesmal etwas ändern muss...
Eine richtige fertige Lösung wäre da sicher besser, weil die dann auch immer klappt. Nicht, dass dann auf einem PC das doch vollkommen falsch aussieht.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!