Autor Thema: Frame soll erkennen welche Bildschirmauflösung  (Gelesen 7038 mal)

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
Frame soll erkennen welche Bildschirmauflösung
« am: 27.06.03 - 11:55:35 »
Hallo liebe Gemeinde,

innerhalb einer Rahmengruppe lasse ich dynamisch die frames füllen.
jedoch ist egal mit welchen Werten (Prozent oder Relativ) ich die frames füllen lasse, einige pages die in den frame gemoved werden, werden bei zB 800x600 nicht vollständig angeziegt.

Kann ich vorab nicht irgendwie feststellen, mit welcher Bildschirmgröße der Anwender arbeitet, um dann gößenangepasste Seiten in den frame zu schieben?

Gibt es dabei eine Art Automatismus?

Danke für eure Hilfe
PS: Ich vergaß natürlich zu sagen, daß es sich hierbei um eine Notes und keine Webanwendung handelt!
« Letzte Änderung: 27.06.03 - 12:08:44 von adminnaddel »

Offline Ranki

  • Junior Mitglied
  • **
  • Beiträge: 63
  • Geschlecht: Männlich
    • Ranki.de
Re:Frame soll erkennen welche Bildschirmauflösung
« Antwort #1 am: 27.06.03 - 12:12:10 »
Hallöchen,

es gibt da eine Lösung mit Javascript. Das Script fragt die Auflösung ab und führt dann zum entsprechenden Fenster.

<SCRIPT language=JavaScript>
function aufloesung()
{
var Hoehe, Breite;
Hoehe=screen.height;
Breite=screen.width;

if (Breite>600 & Breite<800)
   {
   window.open ("klein.html");
   }

if (Breite>=800 & Breite<1024)
   {
   window.open ("mittel.html");
   }

if (Breite>=1024)
   {
   window.open ("gross.html");
   }
}
</SCRIPT>


So hast Du schonmal die Auflösungsabfrage und kannst entweder von Anfang an eine vorbestimmte komplette Seite laden oder auch einzelne Seiten den Frames zuordnen.

Schöne Grüße

Ranki

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Frame soll erkennen welche Bildschirmauflösung
« Antwort #2 am: 27.06.03 - 12:21:36 »
Ich habe das mal vor Jahren unter 4.6 gemacht ( mit Navigatoren )

In den "Initialize" Event des Datenbankscripts kommt folgender Code

Sub initialize()
   Dim session As New NotesSession
   
   Call session.SetEnvironmentVar("ScreenResolution",GetScreenResolution)
%REM
'     @If(@Environment("ScreenResolution") ="1024x768";
'                      (@Command([OpenNavigator];"Nav1024"));
'                      (@Command([OpenNavigator];"Nav800")))
%END REM
End Sub

In den "Postopen" trägst du

     @If(@Environment("ScreenResolution") ="1024x768";
                      (@Command([OpenNavigator];"Nav1024"));
                      (@Command([OpenNavigator];"Nav800")))

ein

' Declaration

Type RECT
   x1 As Long
   y1 As Long
   x2 As Long
   y2 As Long
End Type

Declare Function GetDesktopWindow Lib "user32" () As Long
Declare Function GetWindowRect Lib "user32" (Byval hwnd As Long, lpRect As RECT) As Long


Function GetScreenResolution As String
   Dim R As Rect
   Dim hWnd As Long
   Dim RetVal As Long
   hWnd = GetDesktopWindow ()
   RetVal = GetWindowRect(hWnd, R)
   GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)
End Function

Das sollte so auch mit Frames funktionieren.

eknori

ach ja, in einer anderen DB mache ich das ja mit Frames ( wobei ich allerdings eine Rolle zur Identifikation verwende )

@If(@IsMember("[Profi]"; @UserRoles);

                     (@Do(@SetTargetFrame("_top");
                                  @PostedCommand([OpenFrameset];"frmAdministrator")));
                      (@Do(@SetTargetFrame("_top");
                                    @PostedCommand([OpenFrameset];"frmMain"))))

« Letzte Änderung: 27.06.03 - 12:23:28 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
Re:Frame soll erkennen welche Bildschirmauflösung
« Antwort #3 am: 27.06.03 - 12:32:26 »
Ja, dann sage ich schon mal danke an euch beide!

@Raki....das sieht mir doch eher noch einer Weblösung aus.
Trotzdem vielen Dank

@Eknori....das ja doll, recht herzlichen dank!
Werde ich mal sofort probieren!!! Vielen Dank

Viele Grüße

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
Re:Frame soll erkennen welche Bildschirmauflösung
« Antwort #4 am: 27.06.03 - 12:45:16 »
@Eknori,

nochmal eine Frage zu deiner Lösung:

Das setzt doch voraus, das in der Notes.ini die Variable gesetzt ist, dem ist aber nicht so!
Wo, wann, wie wird sie gesetzt!

MfG
Andreas

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Frame soll erkennen welche Bildschirmauflösung
« Antwort #5 am: 27.06.03 - 12:54:35 »
öhhmmm, das steht doch da in freundlichen Buchstaben


Sub initialize()
   Dim session As New NotesSession
   
   Call session.SetEnvironmentVar("ScreenResolution",GetScreenResolution)
%REM
'    @If(@Environment("ScreenResolution") ="1024x768";
'                      (@Command([OpenNavigator];"Nav1024"));
'                      (@Command([OpenNavigator];"Nav800")))
%END REM
End Sub

*Kopfkratz*
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
Re:Frame soll erkennen welche Bildschirmauflösung
« Antwort #6 am: 28.06.03 - 08:41:55 »
Moin,

habe das jetzt nicht über die API gelöst! Trotzdem danke.
Mache das jetzt über zwei Schaltflächen, @Environment und dem Datenbankscript.

Okay, bis dann

Viele Grüße

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Frame soll erkennen welche Bildschirmauflösung
« Antwort #7 am: 28.06.03 - 17:12:34 »
OK, aber warum machst du das nicht mit dem Script ?? funktioniert doch einwandfrei. Oder hast du einen Notes Client unter Linux ( wine ) am Laufen ( *running gag* ) ??
Wie ermittelst du denn die aktuelle BSA des Users ??.

eknori
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
Re:Frame soll erkennen welche Bildschirmauflösung
« Antwort #8 am: 29.06.03 - 08:18:10 »
Okay,

das liegt daran, das man bei uns einfach plattform unabhänging arbeiten möchte. dasist nun mal nicht mit api möglich.
das "about document" kommt als erstes hoch und hier muß sich der anwender für eine auflösung entscheiden.

viele grüße
andreas

Offline Bellerophon

  • Aktives Mitglied
  • ***
  • Beiträge: 187
  • Geschlecht: Männlich
  • "Der Wille entscheidet"
Re: Frame soll erkennen welche Bildschirmauflösung
« Antwort #9 am: 28.11.08 - 10:00:01 »
*greetz* @ ALL!

Coole Sache das mit den Framesets, ABER:

Ich habe das wie oben beschrieben gemacht!
Es wird auch dei Bildschirmauflösung ermittelt und in die notes.ini eingetragen.

Habe auch zwei Framesets:

1280x1024
1024x768


Die Seiten sind dementsprechend angepasst!

NUR:

In den Startoptionen der Datenbank MUSS ich ja ein Frameset Auswählen:
(Siehe Anhang)

Habe dort die Auflösung der meisten Nutzer eingetragen: 1280x1024

WENN die anderen Nutzer mit der kleineren Auflösung die Datenbank öffnen, öffnen sich beide Framesets...........

Im Datenbankscript habe ich als:

Declaration:
Code
Type RECT
	x1 As Long
	y1 As Long
	x2 As Long
	y2 As Long
End Type

Declare Function GetDesktopWindow Lib "user32" () As Long
Declare Function GetWindowRect Lib "user32" (Byval hwnd As Long, lpRect As RECT) As Long

Im Postopen:
Code
@If(@Environment("ScreenResolution") ="1024x768";
     (@Command([OpenFrameset];"CALENDAR1024x768"));
     (@Command([OpenFrameset];"CALENDAR1280x1024")))

Initialize:
Code
Sub initialize()
	Dim session As New NotesSession
	
	Call session.SetEnvironmentVar("ScreenResolution",GetScreenResolution)
%REM
'@If(@Environment("ScreenResolution") ="1024x768";
'     (@Command([OpenFrameset];"CALENDAR1024x768"));
'     (@Command([OpenFrameset];"CALENDAR1280x1024")))
%END REM
End Sub

"GetScreenResolution":
Code
Function GetScreenResolution As String
	Dim R As Rect
	Dim hWnd As Long
	Dim RetVal As Long
	hWnd = GetDesktopWindow ()
	RetVal = GetWindowRect(hWnd, R)
	GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)
End Function

Das ganze mit Notes 6.5.5 Clients (Ich weiß, dass ich hier im Notes 5 Entwicklungsforum bin, aber soooooviel wird das ja nicht ausmachen, oder?)
Habe ich da was falsch gemacht???
« Letzte Änderung: 28.11.08 - 10:17:52 von Bellerophon »
"Das Leben ist einfach, man trifft Entscheidungen und lebt mit den Konsequenzen."

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Frame soll erkennen welche Bildschirmauflösung
« Antwort #10 am: 28.11.08 - 10:44:10 »
Hallo,

Erst einmal: Warum machst Du einen URALT-Thread wieder auf?  >:(  :-P

Zu deinem Problem:

Als Startframe musst Du ein Frame angeben (dass Du noch erstellen musst), dass als Inhalt nur eine Page (o.ä) hat.
Im QueryOpen dieser Page (o.ä) musst Du die INI-Variable abfragen und dem entsprechend das aktuelle Frame schließen und das gewünschte öffnen.


Welche Client version? 5er, 6er oder 7er?
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline Bellerophon

  • Aktives Mitglied
  • ***
  • Beiträge: 187
  • Geschlecht: Männlich
  • "Der Wille entscheidet"
Re: Frame soll erkennen welche Bildschirmauflösung
« Antwort #11 am: 28.11.08 - 11:13:07 »
Hallo dirk_2909!

DANKE für die schnelle Antwort!
Ich habe den Thread wieder aufgemacht, da ich diesen über die Suchfunktion gefunden hab und mein Problem darauf aufbaut.

Wie ich oben beschrieben habe, benutzen wir fast ALLE 6er Clients, aber wir haben noch einige 5er Clients, deswegen in diesem Forum, da ich auch die 5er Nutzer "bedienen" muss ;-)

Auf JEDEN FALL komme ich damit weiter.....THANX!!!
« Letzte Änderung: 28.11.08 - 14:46:03 von Bellerophon »
"Das Leben ist einfach, man trifft Entscheidungen und lebt mit den Konsequenzen."

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Frame soll erkennen welche Bildschirmauflösung
« Antwort #12 am: 28.11.08 - 11:22:10 »
Zitat
Ich habe den Thread wieder aufgemacht, da ich diesen über die Suchfunktion gefunden hab und mein Problem darauf aufbaut.

Man kann aber auch im richtigen Unterforen einen neuen Thread aufmachen und auf einen anderen Verweisen.
Aber ok.
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline Bellerophon

  • Aktives Mitglied
  • ***
  • Beiträge: 187
  • Geschlecht: Männlich
  • "Der Wille entscheidet"
Re: Frame soll erkennen welche Bildschirmauflösung
« Antwort #13 am: 28.11.08 - 11:33:09 »
OK, beim nächsten mal...........jeder mag es anders ;-)
"Das Leben ist einfach, man trifft Entscheidungen und lebt mit den Konsequenzen."

Offline Bellerophon

  • Aktives Mitglied
  • ***
  • Beiträge: 187
  • Geschlecht: Männlich
  • "Der Wille entscheidet"
Re: Frame soll erkennen welche Bildschirmauflösung
« Antwort #14 am: 28.11.08 - 14:42:52 »

Zu deinem Problem:

Als Startframe musst Du ein Frame angeben (dass Du noch erstellen musst), dass als Inhalt nur eine Page (o.ä) hat.
Im QueryOpen dieser Page (o.ä) musst Du die INI-Variable abfragen

Das habe ich nun gemacht!

...und dem entsprechend das aktuelle Frame schließen und das gewünschte öffnen.

Das gewünschte Frame öffnet sich, aber ich kann das "Start Frame" nicht schließen.

Mit:
Code
@Command([FileCloseWindow])
oder
Code
@Command([CloseWindow])
hinter:
Code
@If(@Environment("ScreenResolution")="1280x1024";
@Command([OpenFrameset];("CALENDAR1280x1024"));
@Command([OpenFrameset];("CALENDAR1024x768")))

komme ich nicht weiter, der Frame bleibt offen!! Hat einer noch eine Idee??
« Letzte Änderung: 28.11.08 - 14:44:54 von Bellerophon »
"Das Leben ist einfach, man trifft Entscheidungen und lebt mit den Konsequenzen."

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Frame soll erkennen welche Bildschirmauflösung
« Antwort #15 am: 28.11.08 - 14:47:59 »
Sorry,

Du musst Deinen Code in den PostOpen-Event schreiben.

Beim QueryOpen gibt es ja noch nichts zum Schleißen ;-)

Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz