vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Fenster automatisch in der Grösse anpassen 
Autor: Franki
Datum: 05.08.18 02:30

Hallo Rainer,
man darf da zwei verschiedene Dinge nicht durcheinander bringen.

Größe deiner Form auf 80% des Bildschirms bringen wäre ja nichts anderes als dass der User deine Form mit der Maus so groß zieht wie er sie möchte. (Da würde das Form_resize greifen)

Hier mal ein schnelles Beispiel zusammen getippt OHNE Fehlerbehandlung:
Du brauchst ein Label, ein Textfeld darunter und zwei Buttons unter dem Textfeld nebeneinander.



Private Sub Form_Load()
    Me.Label1.AutoSize = True
    Me.Label1.WordWrap = True
    Me.Label1.Left = 240
 
    Me.Text1.Text = "Hier steht was geschrieben"
    Me.Text1.Left = Me.Label1.Left
    Me.Command1.Left = Me.Label1.Left
 
End Sub
 
Private Sub Form_Resize()
     If Me.WindowState <> vbMinimized Then
        ' Bei minimiertem Fenster machen Groessenaenderungen keinen Sinn
 
        'Bildschirmauflösung ermitteln
        ' x und y Auflösung
        xRes = Screen.Width / Screen.TwipsPerPixelX
        yRes = Screen.Height / Screen.TwipsPerPixelY
 
        ' Rand ermitteln wegen verschiedener Windows Stile (Z.B. Aero)
        FensterrandRL = Me.Width - Me.ScaleWidth
 
        ' Mindestbreite
        If Me.Width < 8088 Then
            Me.Width = 8088
            Exit Sub
        End If
 
        ' Mindesthöhe
        If Me.Height < 5650 Then
            Me.Height = 5650
            Exit Sub
        End If
 
        Me.Label1.Caption = "Willkommen zur Demo, Ihre Bildschirmauflösung" & _
          "beträgt: " & "X:" & xRes & " Y:" & yRes & vbCrLf & vbCrLf & _
          "Fenstergroesse: " & "(" & Me.Width & " x " & Me.Height & " Twips)"
 
        FeldanpassungGroesse
 
     End If
End Sub
 
Private Sub Command1_Click()
    Me.Label1.FontSize = Me.Label1.FontSize + 3
    Me.Text1.FontSize = Me.Label1.FontSize
    FeldanpassungGroesse
End Sub
 
Private Sub Command2_Click()
 
    Me.Label1.FontSize = Me.Label1.FontSize - 3
    Me.Text1.FontSize = Me.Label1.FontSize
    FeldanpassungGroesse
End Sub
 
Private Sub FeldanpassungGroesse()
    rand = Me.Label1.Left
 
    ' von oben nach unten agieren
    Me.Label1.Width = Me.ScaleWidth - rand - rand
 
    Me.Text1.Height = 0
    Me.Text1.Top = Me.Label1.Top + Me.Label1.Height + rand
    Me.Text1.Width = Me.Label1.Width
 
    Me.Command1.Top = Me.Text1.Top + Me.Text1.Height + rand
    Me.Command2.Top = Me.Command1.Top
 
    Me.Command1.Height = Me.Text1.Height
    Me.Command2.Height = Me.Command1.Height
    Me.Command1.FontSize = Me.Label1.FontSize
    Me.Command2.FontSize = Me.Label1.FontSize
 
    Me.Command1.Width = Me.Text1.Width / 2 - rand
    Me.Command2.Width = Me.Command1.Width
 
    Me.Command2.Left = Me.Command1.Left + Me.Command1.Width + rand + rand
End Sub
Da siehst du oben im Label einerseits die Auflösung des Monitors, die bleibt immer gleich, aber wenn du mit der Maus das Fenster in der Größe änderst ändern sich die Werte (in Twips) auf diese musst du reagieren wenn du die 80% erreichen möchtest.

Was die (hier) Schriftgrößen angeht, probiere die beiden Schaltflächen mal aus, du siehst was passiert. (Aber bitte nicht zu oft, es ist keine Fehlerbehandlung eingebaut)

Das Resize Ereignis gibt es nur für die Form selbst und nicht für ein Steuerelement direkt.
Beim SevGrid funktioniert aber die Zuweisung von .FontSize, Die Abmessungen kannst du wie oben berechnen, aber die Spaltenbreiten z.B. muss der User selbst anpassen. Ich mache das so, dass beim Beenden des Formulars die Werte gespeichert werden und beim nächsten Aufruf wieder zugewiesen werden.

Man sollte dem User so viel Individualität wie möglich gestatten die Anwendung so konfigurieren zu können wie er es braucht bzw. möchte. Stichwort Barrierefreiheit im optischen Sinn. Denn nicht nur die Abmessung des Monitors /Fenster im Vollbild, die Auflösung sondern auch die individuellen Einstellungen in Windows sind wichtig. Nicht jeder hat in Windows die Standardschriftgröße eingestellt, ich als Brillenträger z.B. habe die etwas größer (125%) eingestellt. Und das wird bei meinem obigen Code automatisch berücksichtigt, geht aber krachen wenn du feste Werte vor gibst...

Gruß
Frank
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Fenster automatisch in der Grösse anpassen1.542crosstravel27.07.18 09:58
Re: Fenster automatisch in der Grösse anpassen944minimalist27.07.18 11:43
Re: Fenster automatisch in der Grösse anpassen953crosstravel27.07.18 13:19
Re: Fenster automatisch in der Grösse anpassen932minimalist27.07.18 13:30
Re: Fenster automatisch in der Grösse anpassen922minimalist27.07.18 14:11
Re: Fenster automatisch in der Grösse anpassen982Zardoz27.07.18 16:15
Re: Fenster automatisch in der Grösse anpassen934crosstravel28.07.18 12:20
Re: Fenster automatisch in der Grösse anpassen943crosstravel28.07.18 19:29
Re: Fenster automatisch in der Grösse anpassen883Franki03.08.18 03:03
Re: Fenster automatisch in der Grösse anpassen1.004crosstravel03.08.18 06:18
Re: Fenster automatisch in der Grösse anpassen1.136Franki05.08.18 02:30
Re: Fenster automatisch in der Grösse anpassen851crosstravel05.08.18 09:19
Re: Fenster automatisch in der Grösse anpassen1.163Franki06.08.18 01:52
Re: Fenster automatisch in der Grösse anpassen880crosstravel06.08.18 10:40
Re: Fenster automatisch in der Grösse anpassen882Franki08.08.18 02:21
Re: Fenster automatisch in der Grösse anpassen862Tenconi25.09.18 19:58
Re: Fenster automatisch in der Grösse anpassen858crosstravel26.09.18 07:22
Re: Fenster automatisch in der Grösse anpassen866Tenconi26.09.18 21:51

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel