Autor
|
Thema: Bildschirmauflösung ermitteln (1150 mal gelesen)
|
zwergnasee Mitglied
Beiträge: 9 Registriert: 03.01.2008
|
erstellt am: 03. Jan. 2008 15:54 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte gern die aktuelle Bildschirmauflösung auslesen mit dem Befehl: getEnv(...) Aber was muss ich dann für die Umgebungsvariable des Betriebsystems angeben? Ich habe schon versucht über die Registy zu zugreifen aber unter HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\HardwareProfiles\Current\System\CurrentControlSet\SERVICES \NV\DEVICE0 gibt es mehrere Profile. Man weiß also nicht welches gerade aktuell ist. Die Möglichkeite, erst auf eine Excelblatt zu zugreifen in welche dann die Abfrage in VBA geschrieben ist, kommt auch nicht in Frage. Weil man würde dann immer die dazu gehörige Exceldatei benötigen. Hat jemand eine Idee? Hoffentlich kann mir jemand weiterhelfen.... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 03. Jan. 2008 16:45 <-- editieren / zitieren -->
wofür brauchst Du in eMPlant die Bildschirmauflösung ? ------------------ Der Simulator |
zwergnasee Mitglied
Beiträge: 9 Registriert: 03.01.2008
|
erstellt am: 03. Jan. 2008 17:30 <-- editieren / zitieren --> Unities abgeben:
Ich möchte mehrere Diagramme nebeneinander auf dem Bildschirm öffnen. Diese sollen sich nicht überlappen aber auch den Bildschirmplatz optimal nutzen. Deshalb muss ich erst die Breite und Höhe ermitteln. Da mein Netzwerk auf unterschiedlichen PC verwendet wird, muss man vor dem öffnen der Diagramme erst die max Bildschirmdimensionen ermitteln. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 03. Jan. 2008 18:23 <-- editieren / zitieren -->
selbst wenn Du (z.B. aus der Registrierung) die Bildschirmauflösung erhälst, wie willst Du die Diagramme im Netz optimal plazieren ? wohl nicht ueber xpos,ypos bzw. xscale, yscale, oder ? Wie berücksichtigst Du denn bei der Berechnung die anderen Bereiche z.B. explorer-/console-/tool-Leiste ? ------------------ Der Simulator
[Diese Nachricht wurde von Simulator am 03. Jan. 2008 editiert.] |
zwergnasee Mitglied
Beiträge: 9 Registriert: 03.01.2008
|
erstellt am: 04. Jan. 2008 09:41 <-- editieren / zitieren --> Unities abgeben:
Hm, das habe ich noch nicht berücksichtigt, also ich meine die Größer der Taskleiste. "wohl nicht ueber xpos,ypos bzw. xscale, yscale, oder " Doch! Werde es immer neu berechen, wenn ein neues Diagramm geöffnet wird oder eines geschlossen. Eine andere Alternative lällt mir im Moment nicht ein. Zur Taskleiste, werde einfach mal eine Doppelte annehmen, was anderes fällt mir im Moment nicht ein. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 04. Jan. 2008 16:09 <-- editieren / zitieren -->
schau Dir mal die Methoden "holexywh" fuer Netzwerke an. Ueber diese Methode erhälst Du offset & Maße eines Netzwerkfensters und kannst so Dein Diagramm im Netzwerk entsprechend skalieren.
------------------ Der Simulator |
zwergnasee Mitglied
Beiträge: 9 Registriert: 03.01.2008
|
erstellt am: 07. Jan. 2008 09:46 <-- editieren / zitieren --> Unities abgeben:
Ja, für ein Netwerk. Aber ich bräuchte ja die Abmaße für das komplette Programm. Ich denke es automatisch auszulesen ist unmöglich. Habe den Weg gewählt, dass man die maximal Größe des angezeigten Fensters manuell einbegen muss. An Hand dieser werden dann die Diagramme skaliert. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 07. Jan. 2008 18:54 <-- editieren / zitieren -->
Zitat:
Habe den Weg gewählt, dass man die maximal Größe des angezeigten Fensters manuell einbegen muss. An Hand dieser werden dann die Diagramme skaliert.
???? die maximale Größe des angezeigten individuellen Netzwerkes erhälst Du ueber "fenster anordnen" (Knopfdruck) & "holexywh" ohne weitere manuelle Eingabe ! Dies ist auch wohl der maximal darstellbare Bereich fuer ein Diagramm, wenn Du xpos/ypos /xscale/yscale fuer die Darstellung eines Diagramms im Netz nutzt und nicht "setzexywh" fuer ein eigenes Diagrammfenster. Aber Du hast ja explizit geschrieben, dass Du die Diagramme im Netz darstellen willst (s.o.) ------------------ Der Simulator [Diese Nachricht wurde von Simulator am 07. Jan. 2008 editiert.] |
zwergnasee Mitglied
Beiträge: 9 Registriert: 03.01.2008
|
erstellt am: 09. Jan. 2008 09:55 <-- editieren / zitieren --> Unities abgeben:
Zitat: die maximale Größe des angezeigten individuellen Netzwerkes erhälst Du ueber "fenster anordnen" (Knopfdruck) & "holexywh" ohne weitere manuelle Eingabe !
Okay, wie kann ich nun kontret die Größe des TUNE-Fensters abfragen? Könntest du mir mal bitte den Code hinschreiben. Komme mit dem "fenster anordnen" nicht klar. Ausgangsproblem: Nochmal, damit ich mich auch klar ausgedrückt habe: Ich möchte die Größe des TUNE-Fensters um an hand dieser dann die Diagramme auszurichten. Des mit dem Netzwerk war falsch von mir. Ich hoffe du kannst mir folgen um was es geht.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Homer Simpson Mitglied
Beiträge: 345 Registriert: 14.09.2005
|
erstellt am: 09. Jan. 2008 16:31 <-- editieren / zitieren --> Unities abgeben: Nur für zwergnasee
Ich glaube nicht, dass es eine einfache Möglichkeit gibt. Mit der C-Schnittstelle kann man es natürlich hinbekommen. Alternativ könnte man ein Programm schreiben (also ein executable mit der Endung .exe), das die Auflösung ermittelt und in eine Datei schreibt. Das Programm könnte man mittels der Funtion system aufrufen und die Datei in Plant Simulation einlesen. Ich halte dies aber für übertriebenen Aufwand. Ansonsten geht es prinzipiell noch so (allerdings wirst du damit keine Freude haben): Code: is x, x2, dummy : integer; do x := 600; repeat x := x + 10; Frame.setXYWH(x,100,10,10); Frame.openDialog; Frame.closeDialog; Frame.getXYWH(x2, dummy, dummy, dummy); until x /= x2; print x; end;
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zwergnasee Mitglied
Beiträge: 9 Registriert: 03.01.2008
|
erstellt am: 09. Jan. 2008 16:46 <-- editieren / zitieren --> Unities abgeben:
An die Schnittstelle hatte ich auch schon gedacht, aber mit VBA. Problem ist nur, dass es ohne die Datei nicht geht. Da es aber auf verschieden PC eingestzt werden soll, kann ich es nicht so machen. Man kann nicht immer die Datei mitschleppen. (Ist eine Vorgabe) Dein Idee ist auch nicht sehr praktikable für mich. Werde wohl einfach bei der manuellen eingabe bleiben! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |