Toon posts:

[VB6] Meeschalen van componenten op het form

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoe kan ik zichtbare componenten, laten meeschalen als een gebruiker het form resized of maximaliseerd.

Als je delphi bekijkt heeft elk component ( zoals memo, listbox, panel, enz) een property align = ( Bottom, Client, enz ).
Heeft visual basic ook zo iets of moet voor elke component worden berekend waar deze op het scherm komt te staan.

Heeft iemand een idee hoe ik dit moet doen?

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Je kunt een control altijd een breedte laten hebben die afhangt van de breedte van het formulier.

code:
1
text1.width = form1.width * 0.15


dan is de breedte van de textbox dus altijd 15% van het formulier.

Je kunt dan om het makkelijk te maken in een sub zetten en die in de resize en mischien een andere event aanroepen.

Noushka's Magnificent Dream | Unity


Verwijderd

via een makkelijk loopje (tikfouten voorbehouden :) )

code:
1
2
3
4
5
6
7
8
9
10
11
12
dim lCnt as long
dim dblScale as double

dblScale = 1.1  'Scalefactor
for lCnt =1 to form1.controls.count
  form1.controls(lCnt).left = form1.controls(lCnt).left * dblScale
  form1.controls(lCnt).width = form1.controls(lCnt).width * dblScale
  form1.controls(lCnt).top = form1.controls(lCnt).top * dblScale
  form1.controls(lCnt).height = form1.controls(lCnt).height * dblScale


next lCnt


dit scaled alles op je form naar een scalefactor van 1.1 (oftwel . . alles wordt 10% groter)

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

In Visual Basic hebben alleen het StatusBar en het ToolBar component zo'n property. De rest van de controls zul je dus handmatig moeten moeven in je Form.OnResize-event-handler. Dat is gelukkig meestal niet zo'n heel ernstig grote klus.

Tip: Voor het verplaatsen van groepen componenten op je form kun je ze groeperen aan de door ze in een frame te plaatsen (waarvan je de border op none kunt zetten zodat de gebruiker hem niet ziet). Posities worden dan relatief t.o.v. het frame berekend en het verplaatsen van dat frame zorgt er dus voor dat alles wordt verplaatst.\

|_____vakje______|


Verwijderd

In Visual Basic hebben alleen het StatusBar en het ToolBar component zo'n property.
?? eeuh als je de property Controls bedoeld . .. die heeft een form wel .. het loopje wat hierboven staat werkt met alle controls die op een form staan .. (ieder control is namelijk een instantie van het CWnd-object uit C++)

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

Verwijderd schreef op 22 september 2002 @ 21:24:
?? eeuh als je de property Controls bedoeld .
Helaas >:) Ik had het over de property waar de topicstarter naar opzoek was, een align-property die, na eenmalig instellen, zelf de positionering in z'n parent zou regelen.
Conclusie van m'n post: Dat is geen standaard voorziening van Visual Basic en moet per control worden geïmplementeerd, en dat is weer alleen het geval bij de genoemde controls.

De .Controls property is alleen handig als je bijvoorbeeld door alle controls wil loopen en werkt in jou voorbeeld heel leuk, maar is voor het "align-en" van een enkele control niet echt praktisch dunkt mij :)

|_____vakje______|


Verwijderd

ow .. . ok . . :) eeuh nee allignen wordt wat moeilijker

Verwijderd

Zit wel in VB.NET, helaas niet in VB6.

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 16:55

johnwoo

3S-GTE

CyberSnooP schreef op 22 september 2002 @ 21:04:
In Visual Basic hebben alleen het StatusBar en het ToolBar component zo'n property. De rest van de controls zul je dus handmatig moeten moeven in je Form.OnResize-event-handler. Dat is gelukkig meestal niet zo'n heel ernstig grote klus.

[...]
Je vergeet een heel belangrijke: een PictureBox kan je ook docken aan de zijkant van een form :) Extreem handig voor zelfbouw tool-, status-, side- en weetikveelwat-bars ;)

Daarnaast zijn er ook controls te vinden die je als container kunt gebruiken (net als PictureBox dus) die wel een vorm van aligning/resizing ondersteunen. Splitpane's enzo... De meeste van dit soort (extreem handige, want ze nemen veel saai OnResize-werk uit handen) componentjes kosten alleen wel wat, maar er zullen ook vast wel freeware controltjes te vinden zijn :)

[ Voor 0% gewijzigd door johnwoo op 23-09-2002 10:39 . Reden: typo ]

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Verwijderd

CyberSnooP schreef op 22 september 2002 @ 21:04:
In Visual Basic hebben alleen het StatusBar en het ToolBar component zo'n property. De rest van de controls zul je dus handmatig moeten moeven in je Form.OnResize-event-handler. Dat is gelukkig meestal niet zo'n heel ernstig grote klus.
Het is btw niet Form.Onresize-event ofzo, maar voor alle correctheid Form_resize()
Pagina: 1