Autor |
|
|
|
359 Beiträge - Gehört zum Inventar
|
 |
|
Hi,
keine Ahnung ob es sich wirklich um einen Bug handelt, aber da es mich immer wieder gerade zu Beginn eines neuen Projektes erwischt und auch schon eine Weile beschäftigt, würde ich diese Sache gerne abschließend behandeln.
Bitte checkt doch mal dieses kleine Programm:
Erstellt mit cX2Web - cX3 WebExport (33 Skriptzeilen, cX Pro 3.0.39.4)
Meine Fragen sind nun:
1.)Warum läßt sich das Hauptfenster frei verschieben,
2.)warum ziehen die dem Mutterfenster zugeordneten Fenster dann nicht auch mit,
3.)wieso bewirkt eine Y-Angabe bei einem randlosen Fenster eine andere Position als bei einem Button (wegen der Titelleiste?)
4.)Kann man einen Fensteraufbau unsichtbar bei Programmstart machen, sodaß das Fenster im Bedarfsfall sofort vollständig aufgebaut sichtbar wird?
Grüße
|
Beitrag vom 23.08.2007 - 22:01 |
|
|
Fenster im Hintergrund aufbauen ... |
|
|
221 Beiträge - nicht heilbarer cX-Junkie ;o)
|
|
|
4.) Ich erledige dies immer indem ich das Fenster 100% transpanz gebe und wenn es erscheinen soll 0% transenz ...
 |
Mein System: Windows Vista Ultimate (Admin), Intel(R) Core(TM)2 Duo CPU E4500 @ 2.20GHz, 2.048 MB
Grafik: Auflösung 1280 x 1024
Mein cX: v3.0.40.1
PIs (registriert): Datenbank (1.02.6), Internet (1.0.6), Netzwerk (1.0.3), Tabelle (1.0.12), RTF-Element (1.0.10), Browser-Element (1.0.10), Anzeige-Element+ (1.0.3) |
|
Beitrag vom 24.08.2007 - 10:12 |
|
|
|
607 Beiträge - click.EXE - Meister
|
|
|
Hallo,
1.)Warum läßt sich das Hauptfenster frei verschieben?
Um das Fenster starr im Bildschirm zu verankern, muss Maximierung in der Titelleiste möglich sein und es muss auch maximiert gestartet werden.
2.)warum ziehen die dem Mutterfenster zugeordneten Fenster dann nicht auch mit?
Es fehlt hier ein Anzeige_Bewegt-Ereignis worin die Position der Unterfenster mitgeändert wird.
Außerdem muss die Kindkorrdinaten-Formel in [Anzeige(Hauptfenster).X/Y]+[Fester-X/Y-Abstand] geändert werden.
3.)wieso bewirkt eine Y-Angabe bei einem randlosen Fenster eine andere Position als bei einem Button (wegen der Titelleiste)?
Richtig. Wenn Du die Option Innenabmessungen verwendest, gibt es keine Abweichungen mehr.
4.)Kann man einen Fensteraufbau unsichtbar bei Programmstart machen, sodaß das Fenster im Bedarfsfall sofort vollständig aufgebaut sichtbar wird?
Dazu muss das Anzeigefenster am Ende einfach nur mit den gleichen Einstellungen wieder eingeblendet werden. Einfach einen Mausklick auf die Option riskieren und ausproieren 
Gruß
matzel
 |
Mein System: Windows 6,1 (Admin), Intel(R) Atom(TM) CPU N270 @ 1.60GHz, 2.041 MB, Auflösung 1024 x 600
Mein cX: v3.0.40.5 Pro vom 23.07.2008 (registriert)
PIs (registriert): Tabelle (1.0.14) |
|
Beitrag vom 24.08.2007 - 13:00 |
|
|
Fenster - nächster Versuch |
|
|
359 Beiträge - Gehört zum Inventar
|
 |
|
Hi All,
ich habe nochmal die letzten Anregungen in dieses Skript
einfließen lassen und würde mich freuen wenn Ihr das noch-
mal gegentesten würdet.
Ausgangspunkt ist immernoch dieselbe Y-Angabe jeweils für
einen Button und ein Fenster. D.h.: Die obere Kante des
obersten Button (A) soll mit allen Anzeigefenstern auf
gleicher Höhe liegen. Wenn Ihr jetzt nacheinander Button
A - dann - B - danach - C betätigt, seht Ihr das sich die
Fensterfläche um die Fläche der Titelleiste erweitert. Da-
durch bleibt aber der Nullpunkt des Fensters gleich und die
Option "Innenabmessungen" bringt nichts.
An dieser Stelle soll das Rechteck den Abstand zwischen der
Hauptfenster-Oberkante und den darunter befindlichen
Elementen darstellen. Das Rechteck ist 8mm hoch.
Wenn ich jetzt wüßte, ob alle Titelleisten bei allen Auf-
lösungen immer nur 5mm dick sind, wäre Button und Fenster "C"
eine akzeptable Lösung. Ist das so? - Falls nicht: Gibt es
eine Möglichkeit die Höhe der Titelleisten zu bestimmen?
Vielleicht könnte mal Jemand das Skript wunschgemäß modi-
fizieren.
| Erstellt mit cX2Web - cX3 WebExport (37 Skriptzeilen, cX Pro 3.0.39.4)
Nächster Punkt: Fenster maximieren/frei verschieben
Alle Versuche dem Fenster die Verschiebbarkeit auszureden
liefen Über MATZEL's Vorschlag das Fenster beim Start erst
einmal zu maximieren - soweit ok - nur wenn ich es dann in
die von mir gewünschte Form bringen möchte (Bildschirm.InnenHöhe)
ist es auch gleich wieder verschiebbar. Eine Funktion in der
Form: Anzeige(Hauptfenster).Verschiebbar habe ich nicht
gefunden. Kann es sein, das ich hier wegen meiner Dualscreen-
Lösung mit diesen Problemen zu kämpfen habe?
Alles in Allem finde ich es nicht besonders geglückt, wenn man
so wie ich jetzt, erst alle Optionsbutton stundenlang in sämt-
lichen möglichen Kombinationen durchackern muß um zu erkennen
das die Option "Fenster frei verschieben" vielleicht unter
diesen aber nicht unter anderen Umständen funktioniert. Da
ist noch Handlungsbedarf im Editor. Sinnvoll wäre es, ein
x-beliebiges Fenster an einer x-beliebigen Position unbeweglich
einstellen zu können.Sollten Eure Erfahrungen in eine andere
Richtung gehen, wäre ich für Beispielskripte dankbar.
Letzlich hätte ich halt gerne ein weitestgehend selbstskalierendes
Anzeigefenster.
Grüße
#edit# Mir fiel gerade auf ,das die drei Anzeigefenster innerhalb des Hauptfensters immer die korrekte Höhe bekommen (z.B. bei Taskleiste
ein oder ausgeblendet) obwohl das Hauptfenster bei diesen Einstellungen
die Taskleiste ignoriert.
Der Post wurde 1 mal editiert, zuletzt von Empiriker am 26.08.2007 - 10:31.
|
Beitrag vom 26.08.2007 - 10:18 |
|
|
|
607 Beiträge - click.EXE - Meister
|
|
|
Hallo,
generell wirst Du um ein bisschen Ausprobieren wohl nicht herumkommen. Hier mal ein paar Sachen, die Dir dabei weiterhelfen sollten.
Gruß
matzel
Zitat Gibt es eine Möglichkeit die Höhe der Titelleisten zu bestimmen? |
*** [Anzeige.AußenHöhe]-[Anzeige.Höhe]
Ich dachte zuerst die Buttons sollten in beiden Fenstern (mit Innenabmessungen) auftauchen, deshalb mein Vorschlag.
Aber bei den Fensterkoordinaten sind Innenabmessungen natürlich unbrauchbar.
Zitat Fenster maximieren/frei verschieben |
*** Bildschirm.InnenHöhe als Fenstergröße zu verwenden, kann man nicht gleichsetzen mit maximiert.
Frei verschieben ist eine Option nur für randlose Fenster (also solche, die keine Titelleiste haben), damit man sie mit der Maus trotzdem per Drag&Drop auf der Fensteroberfläche bewegen kann.
=> Ein nicht maximiertes Fenster mit Titelleiste ist demnach immer verschiebbar. Entweder du lässt es maximiert oder verwendest eine selbstgezeichnete Titelleiste.
Du kannst aber eine feste Position speichern und das Fenster bei Anzeige_Bewegt wieder in seine Ausgangsposition setzen.
Zitat Mir fiel gerade auf ,das die drei Anzeigefenster innerhalb des Hauptfensters immer die korrekte Höhe bekommen (z.B. bei Taskleiste
ein oder ausgeblendet)... |
*** Bin nicht sicher, ob ich das richtig verstehe. Deine Kindfenstergrößen richten sich ja prozentual nach der Größe des Hauptfensters.
Zitat
Letzlich hätte ich halt gerne ein weitestgehend selbstskalierendes Anzeigefenster. |
*** Wie gesagt Du benötigst zum Anpassen der Größen und Positionen aller Kindfenster, die entsprechenden Ereignisse für das Hauptfenster (Anzeige_Bewegt, Anzeige_Größe).
Bei der Position solltest Du einen festen X- und Y-Abstand vom linken Hauptfensterrand vorgeben. Bei der Größeeinstellung ändert sich dagegen nichts weiter.
 |
Mein System: Windows 6,1 (Admin), Intel(R) Atom(TM) CPU N270 @ 1.60GHz, 2.041 MB, Auflösung 1024 x 600
Mein cX: v3.0.40.5 Pro vom 23.07.2008 (registriert)
PIs (registriert): Tabelle (1.0.14) |
Der Post wurde 1 mal editiert, zuletzt von matzel am 26.08.2007 - 14:39.
|
Beitrag vom 26.08.2007 - 14:37 |
|
|
|
359 Beiträge - Gehört zum Inventar
|
 |
|
Nett das Du so umfangreich schreibst.
Zitat generell wirst Du um ein bisschen Ausprobieren wohl nicht herumkommen |
... ich glaube da liegt die Wurzel aller Zeitverschwendung. Denn so wie hier wohl ein Jeder unbeschreiblich viel Zeit damit verbringt Erfahrungen nur für sich selbst zu sammeln (und auch wieder zu vergessen!!!) die hunderte Male bereits vorher und auch nachher wieder gemacht wurden und werden. Die Lösung dafür liegt allein bei den (dem) Entwickler(n) des Editors ...
Zitat => Ein nicht maximiertes Fenster mit Titelleiste ist demnach immer verschiebbar. Entweder du lässt es maximiert oder verwendest eine selbstgezeichnete Titelleiste. |
D.h.wenn mein Fenster nicht per Optionsbutton "randlos" geschaltet wurde, müßte das Optionsfeld "Fenster frei verschieben" deaktiviert sein. - richtig?
Zitat Bin nicht sicher, ob ich das richtig verstehe |
Soll heißen: Die Kindfenster innerhalb des Hauptfensters haben ihre Unterkante direkt am Bildschirmrand wenn die Taskleiste weg ist und wenn die Taskleiste bei Programmstart sichtbar ist liegt die Unterkante der Kindfenster ganz nah an der Taskleiste - obwohl das Hauptfenster (als Berechnungsgrundlage für die Größe der Kindfenster) die Taskleiste immer ignoriert und bis zum Bildschirmrand geht. Probier es doch nochmal aus. Ist irgendwie ein bißchen seltsam.
Den Beitrag mit dem "Nachführen" der Kindfenster kenne ich noch. Allerdings finde
ich diese Lösung eher bescheiden. Ist mir auch noch in keiner anderen Software aufgefallen das da die Kindfenster dem Hauptfenster nachrennen.
Gibt es noch weitere Gedanken dazu?
Grüße
#edit# Funktioniert "Mutterfenster" eigentlich nur auf der ersten Ebene ? (Mutter-Kind) Habe gerade
einem Kindfenster ein weiteres Fenster untergeordnet. Die Positionen passen allerdings nicht - funktioniert das überhaupt?
Der Post wurde 2 mal editiert, zuletzt von Empiriker am 26.08.2007 - 16:26.
|
Beitrag vom 26.08.2007 - 16:11 |
|
|
|
607 Beiträge - click.EXE - Meister
|
|
|
Hallo,
so ganz einfach würde ich es nicht formulieren. Das Ausprobieren legt sich eigentlich von ganz allein, sobald man die nötigen AHA-Effekte erlebt hat und dabei mit den "vielen" Möglichkeiten vertraut geworden ist. Obwohl ich nicht weiß, ob man das wirklich soviel nennen kann.
Ich zumindest halte es für sinnvoll, diese Option für randlose Fenster (ohne Titelleiste) einzusetzen. Aber auch das entscheidet jeder für sich selbst. Die Option ist jedenfalls nicht nur auf randlose Fenster beschränkt!
Zitat Nachführen der Kindfenster |
Ich verstehe grundsätzlich nicht, warum Du überhaupt dieses Vorgehen wählst, wenn die Nachteile für Dich so schwer wiegen. Warum verwendest Du nicht die freie Fläche des Hauptfensters, um den Inhalt der Kindfenster darzustellen? Du kannst den Rand ja auch zeichnen um den Schein eines Kindfensters zu wahren. Das wäre immer meine bevorzugte Vorgehensweise!
Diese Beziehung funktioniert bei meinem aktuellen Skript für alle Ebenen problemlos.
Werde das mit der Taskleiste bei Gelegenheit mal ausprobieren. Wäre schön, wenn Du nochmal die Berechnungen der Koordinaten prüfst und eventuell mehr zu deinem Programmverlauf sagen könntest. Vielleicht findet sich dann auch noch andere Gedanken in der Community.
Gruß
matzel
 |
Mein System: Windows 6,1 (Admin), Intel(R) Atom(TM) CPU N270 @ 1.60GHz, 2.041 MB, Auflösung 1024 x 600
Mein cX: v3.0.40.5 Pro vom 23.07.2008 (registriert)
PIs (registriert): Tabelle (1.0.14) |
|
Beitrag vom 26.08.2007 - 17:15 |
|