[VB6]Label positie verplaatsen

Pagina: 1
Acties:
  • 150 views sinds 30-01-2008
  • Reageer

  • Glashelder
  • Registratie: September 2002
  • Niet online

Glashelder

Anti Android

Topicstarter
Ik ben al een tijdje met Visual Basic bezig. Nu had ik het idee om een soort spel (voor zover je het spel kan noemen) te maken in Visual Basic.

Het ziet er niet uit en gaat er voorlopig ook niet uitzien, maar ik heb een label gebruikt om een soort struik te maken. Groen veld gewoon dus. Aleen als de persoon zich verplaats dan moet dit veld (label) zich naar beneden verplaatsen. Ik heb ik het boek gezien dat het kan (wordt 1 zin aan besteed ofzo), alleen het boek is 400 pagina's dik en ik kan het onmogelijk terugvinden :(

Ik heb me suf gezocht op dit forum

[search=Visual Basic Label verplaatsen]
[search=VB Label verplaatsen]
[search=Visual Basic object verplaatsen]
[search=VB object verplaatsen]

Hoe doe je dat ?

Oja dat een spel eigenlijk in C++ moet ipv in VB dat weet ik nu wel, kwam toevallig zo'n topic tegen. C++ komt later nog wel :)

[ Voor 10% gewijzigd door Glashelder op 14-11-2003 18:34 ]

PV 4915wp op oost, 2680 wp op west, 1900 wp op zuid. pvoutput - AUX 8 kW bi bloc


  • MMUilwijk
  • Registratie: Oktober 2001
  • Laatst online: 09:38
Dit moet toch niet zo heel lastig zijn ?
Als ik je goed begrijp wil je een label vertical naar beneden laten verplaatsen !
Kijk dan eens naar de methode .top van het label ? Volgens mij kan je je label daarmee gewoon moven !

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
Private Sub cmdMove_Click()
'knopje om een label 50px naar beneden te verplaatsen

  Dim intYmove as Integer

  intYmove = 50
  lblWhatever.Top = intYmove

End Sub

[ Voor 41% gewijzigd door MMUilwijk op 14-11-2003 18:43 . Reden: code toegevoegd ;) ]

Everytime I suffer I become a better man because of it


  • Kix@$$
  • Registratie: December 2001
  • Laatst online: 15:33
MMUilwijk schreef op 14 november 2003 @ 18:35:
Dit moet toch niet zo heel lastig zijn ?
Als ik je goed begrijp wil je een label vertical naar beneden laten verplaatsen !
Kijk dan eens naar de methode .top van het label ? Volgens mij kan je je label daarmee gewoon moven !

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
Private Sub cmdMove_Click()
'knopje om een label 50px naar beneden te verplaatsen

  Dim intYmove as Integer

  intYmove = 50
  lblWhatever.Top = intYmove

End Sub
Kleine opmerking ;)

1: In VB worden standaard Twips gebruikt ipv pixels. 1 pixel is 15 twips
2: Zo verplaats je een label niet direct naar beneden maar naar 50 Twips vanaf de bovenkant van je form

Dus als je een label 50 pixels naar beneden wilt doen doe je:

Visual Basic:
1
2
3
4
5
6
7
8
9
Private Sub cmdMove_Click()
'knopje om een label 50px naar beneden te verplaatsen

  Dim intYmove as Integer

  intYmove = 50 * 15 ' 50 pixels naar twips berekenen
  lblWhatever.Top = lblWhatever.Top + intYmove

End Sub


:)

  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Sterker nog, zo goed als elk Visual Basic control heeft een Move method die je aan kan roepen om de control te verplaatsen.

En om hem dan 50 twips naar beneden te zetten moet je het als volgt doen:
code:
1
Label1.Move Label1.Left, Label1.Top + 50


Met de code van MMUilwijk zet je hem altijd 50 twips van de bovenkant van zijn container (form/frame) af.
Volgens de boeken is de Move method ook nog sneller dan het zetten van de Top positie. Als je hem een keer verplaatst zal het niet veel uitmaken maar als je hem vaak gaat verplaatsen, wat wel waarschijnlijk is bij een spel, zal het misschien wel merkbaar zijn.

Edit: Kix was sneller ;)

[ Voor 3% gewijzigd door Lister op 14-11-2003 18:52 ]


  • MMUilwijk
  • Registratie: Oktober 2001
  • Laatst online: 09:38
Kix@$$ schreef op 14 november 2003 @ 18:47:
[...]


Kleine opmerking ;)

1: In VB worden standaard Twips gebruikt ipv pixels. 1 pixel is 15 twips
2: Zo verplaats je een label niet direct naar beneden maar naar 50 Twips vanaf de bovenkant van je form

Dus als je een label 50 pixels naar beneden wilt doen doe je:

Visual Basic:
1
2
3
4
5
6
7
8
9
Private Sub cmdMove_Click()
'knopje om een label 50px naar beneden te verplaatsen

  Dim intYmove as Integer

  intYmove = 50 * 15 ' 50 pixels naar twips berekenen
  lblWhatever.Top = lblWhatever.Top + intYmove

End Sub


:)
Kijk aan... Dat van die twips had ik nog niet gezien :) Weer wat geleerd !
En je hebt natuurlijk helemaal gelijk wat betreft die positions !

Nu we toch aan het moven van controls zijn, is er ook een manier om een control slidend te laten openen ? (denk bijvoorbeeld aan de mogelijkheden van Flash om niet direct een item neer te zetten, maar om die "uit te laten schuiven")

[ Voor 14% gewijzigd door MMUilwijk op 14-11-2003 18:55 ]

Everytime I suffer I become a better man because of it


  • Glashelder
  • Registratie: September 2002
  • Niet online

Glashelder

Anti Android

Topicstarter
Ik zou jullie graag hartelijk bedanken, ik kon het echt niet vinden (serieus :P).. :)

RayNbow: jou input waardeer ik ook ;)

[ Voor 20% gewijzigd door Glashelder op 14-11-2003 20:08 ]

PV 4915wp op oost, 2680 wp op west, 1900 wp op zuid. pvoutput - AUX 8 kW bi bloc


  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 16:33

RayNbow

Kirika <3

Kix@$$ schreef op 14 november 2003 @ 18:47:
[...]


Kleine opmerking ;)

1: In VB worden standaard Twips gebruikt ipv pixels. 1 pixel is 15 twips
2: Zo verplaats je een label niet direct naar beneden maar naar 50 Twips vanaf de bovenkant van je form

Dus als je een label 50 pixels naar beneden wilt doen doe je:

Visual Basic:
1
2
3
4
5
6
7
8
9
Private Sub cmdMove_Click()
'knopje om een label 50px naar beneden te verplaatsen

  Dim intYmove as Integer

  intYmove = 50 * 15 ' 50 pixels naar twips berekenen
  lblWhatever.Top = lblWhatever.Top + intYmove

End Sub


:)
NB: Twips zijn NIET ALTIJD 15 pixels. De grootte van een Twips is afhankelijk van je instellingen. Als een gebruiker bijvoorbeeld Large Fonts gebruikt kunnen er slechts 12 twips in een pixel passen. De juiste code moet dan ook zijn:

Visual Basic:
1
2
3
4
5
6
7
8
9
Private Sub cmdMove_Click()
'knopje om een label 50px naar beneden te verplaatsen

  Dim intYmove as Integer

  intYmove = 50 * Screen.TwipsPerPixelY ' 50 pixels naar twips berekenen
  lblWhatever.Top = lblWhatever.Top + intYmove

End Sub

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 13:56

johnwoo

3S-GTE

Een van de eerste dingen die ik doe als ik een form maak, naast het instellen van het font op Tahoma (standaard Windows GUI font), is de ScaleMode op pixels zetten. Dan ben je van die omrekeningen af, en het is sneller (de API calls die VB gebruikt willen hun coordinaten in pixels, dus hoeft VB ze niet om te rekenen). Idem voor PictureBoxes.

Eigenlijk zou je die ambient properties in moeten kunnen stellen, zodat componenten standaard b.v. Tahoma als font, of pixels als scalemode gebruiken. De defaults staan wel in de objectbrowser (VBRUN library), maar alleen readonly...

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


Verwijderd

Als het goed is, kan je het label ook verplaatsen d.m.v. de "move" opdracht. het is alweer een tijdje geleden, maar je doet iets van "label.move x,y" en dan verplaatst hij hem in een regel.

Maar, ik weet het niet zeker dus je moet maar even kijken.. ;)

[ Voor 21% gewijzigd door Verwijderd op 15-11-2003 11:25 ]

Pagina: 1