| |
Visual-Basic EinsteigerBestimmen der Darstellungsposition einer Form bei 2 Monitoren | | | Autor: guenni255 | Datum: 25.09.16 13:32 |
| Hallo Forum
Ich habe ein Problem bei der Darstellung von Formularen.
Ich möchte gern durch Autostart ein Form im Bereich eines 2. Monitores darstellen.
Kenn mir jemand dabei helfen wie ich an die Koordinaten kommen in deren Bereich ich darstellen kann.
Vielen Dank im Voraus
Gruß Günni | |
Re: Bestimmen der Darstellungsposition einer Form bei 2 Monitoren | | | Autor: Franki | Datum: 26.09.16 01:18 |
| Hallo Günni,
du musst zuerst mal davon ausgehen, dass mehrere Monitore vorhanden sind und auch kontrollieren ob sie erreichbar sind. Du kannst die Konfiguration des Users erst mal nicht kennen.
Ich mache das so, da nach dem Setup meiner Programme alle Formulare sichtbar sind, der User kann diese kann verändren verschieben wohin er möchte, sei es auf mehrere Monitore oder was auch immer.
Beim Beenden speichere ich die Koordinaten und beim nächsten Start werden sie wieder ausgelesen und die Formulare entsprechend positioniert
Schwierigkeiten gibt es aber z.B. dann wenn dann der zweite Monitor nicht verfügbar ist oder eine andere Auflösung hat usw.
Wenn das für dich wichtig ist, dann musst entsprechende Abfragen einbauen.
Du solltest genauere Angaben liefern was du für den Multimonitorbetrieb für Vorassetzungen an den User hast.
Gruß
Frank | |
Re: Bestimmen der Darstellungsposition einer Form bei 2 Monitoren | | | Autor: Oggi | Datum: 26.09.16 16:37 |
| Howdy guenni255
Mit nachfolgendem Tipp wird die Anzahl der Monitore ermittelt. Auf dem entsprechenden Moni wird die Bildschirmgröße mit Screen.Width und Screen.Height ermittelt und deine Form mit Me.Left und Me.Top plaziert.
http://www.vbarchiv.net/tipps/details.php?id=1484
Beitrag wurde zuletzt am 26.09.16 um 16:45:45 editiert. | |
Re: Bestimmen der Darstellungsposition einer Form bei 2 Monitoren | | | Autor: guenni255 | Datum: 27.09.16 20:09 |
| Hallo
Vielen Dank für eure Antworten.
@Franki
Du hast natürlich recht mit den Prüf-abfragen, wenn das Programm für jemanden anderes ist. Aber dies nutze nur ich an meiner Maschine und daher weiß ich das ein 2.Monitor immer dran ist.
Mit ging es auch darum die von dir erwähnten Koordinaten zu ermitteln.
Dies hat Oggi mir gezeigt Vielen Dank.
Gruß Günni | |
Re: Bestimmen der Darstellungsposition einer Form bei 2 Monitoren | | | Autor: guenni255 | Datum: 27.09.16 20:38 |
| Hallo Oggi
Da ergibt sich für mich nur das Problem wie spreche ich den ENTSPRECHENDEN Monitor, in diesem Fall Monitor 2, an??.
das Programm Startet ja immer auf dem ersten Monitor.
Nun muss ich mein Form auf den 2.Monitor verschieben.
Die Position lege ich mit Me.top und Me.left fest. Nur dazu muss ich mich auf dem 2. Monitor befinden. Wie Komme ich dahin?
Gibt es Befehle wie screen2.top oder screen2.setfocus oder ähnlich. Sorry das ich nachfrage aber bin noch Einsteiger.
Gruß Günni | |
Re: Bestimmen der Darstellungsposition einer Form bei 2 Monitoren | | | Autor: Oggi | Datum: 28.09.16 11:09 |
| Howdy Günni,
da du den Code nur für dich auf deinem zweiten Monitor benötigst, ist die Lösung einfach:
Erstelle zwei Formen, die Erste mit zwei Schaltflächen und füge dort nachfolgenden Code ein. Durch manuelles Verschieben von Form1 wird dann die <Position> von Form2 auf dem zweiten Monitor festgelegt. Beim nächsten Programmstart erscheint dort dann wie gewünscht die Form2.
Private Sub Command1_Click()
MsgBox "Top: " & Me.Top & vbCrLf & "Left: " & Me.Left
SaveSetting App.Title, "Options", "Form2Moni2Left", Me.Left
SaveSetting App.Title, "Options", "Form2Moni2Top", Me.Top
End Sub
Private Sub Command2_Click()
Form2.Show
Form2.Top = GetSetting(App.Title, "Options", "Form2Moni2Top", 0)
Form2.Left = GetSetting(App.Title, "Options", "Form2Moni2left", 0)
End Sub
Private Sub Form_Load()
Command1.Caption = "Position"
Command2.Caption = "Form2"
Form2.Show
Form2.Top = GetSetting(App.Title, "Options", "Form2Moni2Top", 0)
Form2.Left = GetSetting(App.Title, "Options", "Form2Moni2Left", 0)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Unload Form2
End Sub
Beitrag wurde zuletzt am 28.09.16 um 11:13:41 editiert. | |
Re: Bestimmen der Darstellungsposition einer Form bei 2 Monitoren | | | Autor: effeff | Datum: 28.09.16 16:02 |
| Wenn es Deine eigenen Monitore sind, deren Auflösung Du kennst:
Bei einem erweiterten Desktop hast Du eine Gesamtauflösung. Du brauchst als als "Left" nur die Anzahl der Pixel den linken Monitors zu der gewünschten Position auf dem rechten Monitor dazu zählen...
Wenn Du auf dem rechten Monitor eine Form 200 Pixel vom linken Rand anzeigen lassen möchtest und der linke Monitor eine Auflösung von 1920x1080 Pixeln hat, dann ist Dein "Left" eben 1920 + 200= 1120
EALA FREYA FRESENA | |
Re: Bestimmen der Darstellungsposition einer Form bei 2 Monitoren | | | Autor: Oggi | Datum: 28.09.16 19:49 |
| Wenn Du dagegen auf dem linken Monitor eine Form 200 Pixel vom linken Rand anzeigen lassen möchtest und der rechte Monitor eine Auflösung von 1920x1080 Pixeln hat, dann ist Dein "Left" eben 200 - 1920 = -1720 | |
Re: Bestimmen der Darstellungsposition einer Form bei 2 Monitoren | | | Autor: Franki | Datum: 29.09.16 09:50 |
| Hallo Günni,
Rechenbeispiele hast du ja schon bekommen, aber besser ist es, das auch vorab mal zu kontrollieren. Denn bei zwei Monitoren kann ja sowohl der rechte als auch der linke der primäre Monitor in Windows sein.
Das hängt davon ab, was deine Grafikkarte so macht und wie du das dann "verschoben" hast je nach Bedarf.
Es kann also gut sein, das ganz links am Rand ein negativer Wert herrscht in der Position.
Testen kannst du z.B. so:
Private Sub Command1_Click()
' Positionsbestimmung und Groesse
GesamtbreiteFormular = Me.Width
GesamtbreiteWindows = Screen.Width
PosLinks = Me.Left
MsgBox "Breite gesamt: " & GesamtbreiteWindows & vbCrLf & "Formularbreite:" & _
"" & GesamtbreiteFormular & vbCrLf & "Meine Position: " & PosLinks
End Sub Teste mal etwas indem du mit der Maus das Formular durch die Gegend schiebst und auf die Schaltfläche klickst. Dann bekommst du einen Überblick wie sich das verhält auf deinem Rechner.
Gruß
Frank | |
Re: Bestimmen der Darstellungsposition einer Form bei 2 Monitoren | | | Autor: guenni255 | Datum: 30.09.16 06:49 |
| Hallo Forum
Ich danke euch für eure zahlreichen Antworten.
Der einfachste und für mich ausreichende Weg ist der Vorschlag von effeff.
Ich werde natürlich auch die anderen Vorschläge ausprobieren und mir zu Herzen nehmen z.B. die Überprüfung.
Nochmals mein Dank an alle.
Gruß Günni | |
Re: Bestimmen der Darstellungsposition einer Form bei 2 Monitoren | | | Autor: effeff | Datum: 30.09.16 20:03 |
| Häh? Dann wäre der Left bei 200... Es sei denn, der zweite Monitor ist als erster Monitor eingerichtet.
EALA FREYA FRESENA | |
Re: Bestimmen der Darstellungsposition einer Form bei 2 Monitoren | | | Autor: Oggi | Datum: 30.09.16 20:07 |
| lass dich nicht auf den Arm nehmen, mein Gutschter | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|