vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

Visual-Basic Einsteiger
Re: Fenster zu groß 
Autor: stefan220273
Datum: 12.03.03 19:20

Das ganze musst du in ein Modul packen!
Option Explicit
 
Private Type RECT   ' pt
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
 
Private Declare Function GetClientRect Lib "user32" _
    (ByVal hwnd As Long, _
    lpRect As RECT) As Long
 
'
' Passt die Grösse des Formulars und der Steuerelemente
' den übergebenen Werten an.
'
Public Sub ShowSizedForm(frmForm As Form, lngNewWidth As Long, _
    blnCenterForm As Boolean)
 
    Dim rctFormClient As RECT
    Dim lngOldWidth As Long
    Dim sngPercent As Single
    Dim sngDiffX As Single
    Dim sngDiffY As Single
    Dim lngClientHeight As Long
    Dim ctrControl As Control
 
    ' "Alte" Breite des Formulars speichern.
    lngOldWidth = frmForm.Width
 
    ' Neue Breite zuweisen.
    frmForm.Width = lngNewWidth     ' <--
 
    ' Rechteck des Client-Bereichs dieses Formulars
    ' ermitteln.
    Call GetClientRect(frmForm.hwnd, rctFormClient)
 
    ' Berechnen, um wieviel Twips der Clientbereich niedriger
    ' ist als die Höhe des gesamten Formulars. Entspricht ca.
    ' der Rahmenbreite plus die Höhe der Titelleiste.
    sngDiffY = frmForm.Height - _
        (rctFormClient.Bottom - rctFormClient.Top) * _
        Screen.TwipsPerPixelY
 
    ' Analog bei der Breite vorgehen.
    sngDiffX = frmForm.Width - _
        (rctFormClient.Right - rctFormClient.Left) * _
        Screen.TwipsPerPixelX
 
    ' Verhältnis zwischen alten "Einheiten" und neuen "Einheiten"
    ' berechnen.
    sngPercent = (frmForm.Width - sngDiffX) / _
    (lngOldWidth - sngDiffX)
 
    ' Höhe des Client-Bereichs bestimmen.
    lngClientHeight = frmForm.Height - sngDiffY
 
    ' Neue Höhe zuweisen.
    frmForm.Height = lngClientHeight * sngPercent + sngDiffY
 
    ' Fehler bei Timern etc.
    On Error Resume Next
 
    ' Alle Steuerelemente anpasssen.
    For Each ctrControl In frmForm.Controls
 
        ' DriveListBox und ComboBox unterstützen die
        ' Move-Anweisung nicht.
        If (TypeOf ctrControl Is DriveListBox Or _
            TypeOf ctrControl Is ComboBox) Then
 
            ctrControl.Top = ctrControl.Top * sngPercent
            ctrControl.Left = ctrControl.Left * sngPercent
            ctrControl.Width = ctrControl.Width * sngPercent
            ctrControl.Height = ctrControl.Height * sngPercent
 
        ' Das Line-Steuerelement wird anders positioniert.
        ElseIf (TypeOf ctrControl Is Line) Then
            ctrControl.X1 = ctrControl.X1 * sngPercent
            ctrControl.X2 = ctrControl.X2 * sngPercent
            ctrControl.Y1 = ctrControl.Y1 * sngPercent
            ctrControl.Y2 = ctrControl.Y2 * sngPercent
 
            ctrControl.BorderWidth = CInt(ctrControl.BorderWidth * _
                sngPercent)
 
        ' Andere Steuerelemente (Label, TextBox etc.).
        Else
            ctrControl.Move _
                ctrControl.Left * sngPercent, _
                ctrControl.Top * sngPercent, _
                ctrControl.Width * sngPercent, _
                ctrControl.Height * sngPercent
 
            If (TypeOf ctrControl Is Shape) Then _
                ctrControl.BorderWidth = CInt(ctrControl.BorderWidth * _
                sngPercent)
        End If
 
        ' Schriftgrösse anpassen (Fehler, der bei Image-Steuerelement
        ' etc. entsteht, wird unterdrückt.
        ctrControl.Font.Size = ctrControl.Font.Size * sngPercent
    Next
 
    ' Formular zentrieren.
    If blnCenterForm = True Then frmForm.Move _
        (Screen.Width - frmForm.Width) / 2, _
        (Screen.Height - frmForm.Height) / 2
    frmForm.Show
End Sub
Und aufrufen tut's du das ganze so:
Call ShowSizedForm(Me, Screen.Width / 1, False)



Gruss Stefan
Egal wie oft etwas gelöscht wird, das Internet vergisst nie und Menschen lassen sich nicht dauerhaft täuschen!
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Fenster zu groß131Mr. NoName12.03.03 10:33
Re: Fenster zu groß355Boris12.03.03 10:36
Re: Fenster zu groß73Mr. NoName12.03.03 11:03
Re: Fenster zu groß348-MAJOR_AMOK-12.03.03 11:19
Re: Fenster zu groß73Mr. NoName12.03.03 12:56
Re: Fenster zu groß342stefan22027312.03.03 13:13
Re: Fenster zu groß81Zardoz12.03.03 14:08
Re: Fenster zu groß71Mr. NoName12.03.03 15:42
Re: Fenster zu groß480stefan22027312.03.03 19:20

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-2025 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