# Grösse von Listbox, ect. anpassen



## ITiger (30. Oktober 2002)

Hallo mal wieder!

Ich möchte gerne die Grösse des Fensters meines Programms variabel machen...

Mein Problem hierbei sind die enthaltenen Elemente...

Die Listboxes und die Progressbar bleiben leider genauso gross wie sie bereits waren... Wie mach ich das, dass die Dinger ihre Grösse (gegebenenfalls ihre Position) ändern?

Die CommandButtons bleiben leider auch am selben Fleck... Die sollten aber immer eine bestimmte Entfernung vom Fensterrand haben...

Naja, vielleicht kennt ja jemand das Problem...


Gruss ITiger.


----------



## Dario Linsky (30. Oktober 2002)

du müsstest im onresize-ereignis des formulars die position und grösse der steuerelemente anpassen. in vb sind die angaben für höhe und breite nur leider in twips gemessen, und dadurch nicht immer gleich.
damit du mit pixeln arbeiten kannst, nimmst du dir einfach noch die variablen "Screen.TwipsPerPixelX" und "Screen.TwipsPerPixelY" dazu.

manche steuerelemente haben auch eine eigenschaft namens "align", wodurch das element beispielsweise immer am linken rand des formulars "klebt". siehe auch unter http://programmierer-board.de/phpBB2/viewtopic.php?t=31271


----------



## ITiger (30. Oktober 2002)

hi, versuche das grade mit _resize aber wenn ich das ding maximiere, dann verhauts mir alles!

Wieso das denn? Wird da _Resize nicht auch aktiv?

Sehr Seltsam...

P.S.: Ein Attribut Form_OnResize() hab ich nicht gefunden, daher nehme ich Form_Resize() was eigentlich das selbe tun sollte, oder?


----------



## Dario Linsky (30. Oktober 2002)

eigentlich sollte beim maximieren auch eine grössenänderung stattfinden. der code der in der prozedur Form_Resize() steht wird vom onresize-ereignis aufgerufen und ausgeführt.
was genau meinst du denn überhaupt mit "verhaut mir alles"?


----------



## ITiger (30. Oktober 2002)

> _Original geschrieben von asphyxia _
> *was genau meinst du denn überhaupt mit "verhaut mir alles"? *



Ich meine damit die Listboxen kleben irgenwo im Fenster drin... also sagen wir mal...

Normal: 5 mm Abstand vom Linken Rand & 5 mm vom Rechten.

verhaut mir alles: Listbox beginnt in der Mitte des Fensters und hört irgendwo hinter dem Fensterrand auf (kann nicht sagen wo, ich seh's ja nit...) 

Wenn ich ganz normal mit der Maus hingegen auf eine Fensterecke klicke und dann das Fenster grösser mache, wird alles korrekt angezeigt...

Gruss. ITiger.


----------



## Dario Linsky (30. Oktober 2002)

so ganz nachvollziehen kann ich das irgendwie nicht. wenn du vielleicht mal deinen code posten könntest, werd ich mal sehen ob ich irgendwas finde.
ansonsten hab ich mal folgenden code ausprobiert, und das funktioniert auch beim maximieren ohne probleme:

```
Private Sub Form_Resize()
List1.Height = Form1.Height - 2000
List1.Width = Form1.Width - 2000
End Sub
```

allerdings ist die listbox in visual basic etwas merkwürdig, da sich diese beim ändern der grösse etwas komisch verhält.


----------



## ITiger (30. Oktober 2002)

Danke erstmal, dass Du Dir soviel Mühe machst... 

Hier kommt der Code...


```
Private Sub Form_Resize()
'
'        Dim x As Long, y As Long
'
'        x = Hauptform.Width
'        y = Hauptform.Height
'
'        List5.Left = (x - (List5.Width)) / 2
'        List1.Left = (x - (List1.Width)) / 2
'        List3.Left = (x - (List3.Width)) / 2
'
'        Label1.Left = List5.Left
'        Label2.Left = List5.Left
'
'
'        Command1.Top = List3.Top + List3.Height
'        Command2.Top = List3.Top + List3.Height
'        Command2.Left = x - Command2.Width
'
'        List5.Width = x
'        List1.Width = x
'        List3.Width = x
'        List5.Height = 0.25 * (y - (Command1.Height + ProgressBar1.Height))
'        List1.Top = List5.Top + List5.Height
'        List1.Height = 0.25 * (y - (Command1.Height + ProgressBar1.Height))
'        List3.Top = List1.Top + List1.Height + ((0.125 * (y - (Command1.Height + ProgressBar1.Height))))
'        List3.Height = 0.25 * (y - (Command1.Height + ProgressBar1.Height))
'        Label1.Top = List5.Top - Label1.Height
'        Label2.Top = List3.Top - Label2.Height
'
'
'
'End Sub
```

Vielleicht fällt Dir ja was auf, was mir entgangen ist...

Gruss ITiger.


----------

