Toon posts:

[VB] Eigen usercontrols

Pagina: 1
Acties:

Verwijderd

Topicstarter
He tweakers. Ik ben in VB met een programma begonnen, maar omdat hier heel veel dezelfde voorwerpen in moesten komen dacht ik, laat ik maar eens usercontrols proberen, nou, na 5 minuten proberen had ik het wel door, maar nu heb ik een paar probleempjes. Ik moest dus ook een soort van button maken, want ik vond die grijze standaardbuttons te lelijk, dus ik een usercontrol maken met een shape en een label erin en wat script erom heen en naar een DLL gecompiled, maar ik wil nu die caption van de label aanpassen, maar hoe moet dat? Is het ook mogelijk om die caption van de label te koppelen aan een van de properties van de User Control zelf? Alvast bedankt, Ed.

Verwijderd

Daar is een prachtige wizard voor :). Klik op Add... -> Usercontrol -> Selecteer de usercontrol wizard (of iets wat daarop lijkt) en selecteer nu kan je via deze eenvoudige wizard dit zo oplossen.

PS Je kan natuurlijk ook zo'n mooie button van www.pscode.com downloaden, maar echte bikkels vinden het wiel rustig twee keer uit :P

Verwijderd

Topicstarter
Ehm... Bij mij staat dat niet, Ik gebruik nog VB5.0, misschien ligt het daaraan.

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 02-09 19:44

Gerco

Professional Newbie

Wat de usercontrol wizard doet kun je ook zelf doen. Het meeste van wat hij doet is properties koppelen.

Om bijvoorbeeld de caption property van een label te koppelen aan de Caption property van je usercontrol doe je dit:
code:
1
2
3
4
5
6
Public Property Let Caption(NewCaption as String)
  Label1.Caption = NewCaption
End Property
Public Property Get Caption() As String
  Caption = Label1.Caption
End Property

hier staat een voorbeeldje van een eenvoudige VB6 usercontrol, deels gemaakt met de Usercontrol Wizard.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Topicstarter
Thx, maar nu nog een probleempje, als ik dus die waarde intik in de properties en ik start het programma, is het ok, maar als ik dan het programma weer sluit is de waarde weer weg. :( Hoe kan ik dat fixen?

Verwijderd

Je moet een aantal events gebruiken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
'Initialize Properties for User Control
Private Sub UserControl_InitProperties()
  m_Description = m_def_Description
  m_ShowSearchButton = m_def_ShowSearchButton
  m_ShowSaveButton = m_def_ShowSaveButton
  m_ShowExpandButton = m_def_ShowExpandButton
  m_ShowCollapseButton = m_def_ShowCollapseButton
  m_ShowButtonDescriptions = m_def_ShowButtonDescriptions
End Sub

'Load property values from storage
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  m_Description = PropBag.ReadProperty("Description", m_def_Description)
  Description = m_Description
  tbrMain.BackColor = PropBag.ReadProperty("BackColor", &H8000000F)
  tbrMain.ForeColor = PropBag.ReadProperty("ForeColor", &H80000012)
  tbrMain.Enabled = PropBag.ReadProperty("Enabled", True)
  m_ShowSearchButton = PropBag.ReadProperty("ShowSearchButton", m_def_ShowSearchButton)
  ShowSearchButton = m_ShowSearchButton
  m_ShowSaveButton = PropBag.ReadProperty("ShowSaveButton", m_def_ShowSaveButton)
  ShowSaveButton = m_ShowSaveButton
  m_ShowExpandButton = PropBag.ReadProperty("ShowExpandButton", m_def_ShowExpandButton)
  ShowExpandButton = m_ShowExpandButton
  m_ShowCollapseButton = PropBag.ReadProperty("ShowCollapseButton", m_def_ShowCollapseButton)
  ShowCollapseButton = m_ShowCollapseButton
  m_ShowButtonDescriptions = PropBag.ReadProperty("ShowButtonDescriptions", m_def_ShowButtonDescriptions)
  ShowButtonDescriptions = m_ShowButtonDescriptions
End Sub

'Write property values to storage
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  Call PropBag.WriteProperty("Description", m_Description, m_def_Description)
  Call PropBag.WriteProperty("BackColor", tbrMain.BackColor, &H8000000F)
  Call PropBag.WriteProperty("ForeColor", tbrMain.ForeColor, &H80000012)
  Call PropBag.WriteProperty("Enabled", tbrMain.Enabled, True)
  Call PropBag.WriteProperty("ShowSearchButton", m_ShowSearchButton, m_def_ShowSearchButton)
  Call PropBag.WriteProperty("ShowSaveButton", m_ShowSaveButton, m_def_ShowSaveButton)
  Call PropBag.WriteProperty("ShowExpandButton", m_ShowExpandButton, m_def_ShowExpandButton)
  Call PropBag.WriteProperty("ShowCollapseButton", m_ShowCollapseButton, m_def_ShowCollapseButton)
  Call PropBag.WriteProperty("ShowButtonDescriptions", m_ShowButtonDescriptions, m_def_ShowButtonDescriptions)
End Sub

Dit is een stukje van een van mijn usercontrols, maar hier moet je wel wat mee kunnen lijkt me :)

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 02-09 19:44

Gerco

Professional Newbie

Op maandag 13 mei 2002 18:46 schreef BasjeBanaantje het volgende:
Thx, maar nu nog een probleempje, als ik dus die waarde intik in de properties en ik start het programma, is het ok, maar als ik dan het programma weer sluit is de waarde weer weg. :( Hoe kan ik dat fixen?
Zoals in de post hierboven ook al gezegd is, je moet je properties opslaan. In mijn usercontrol voorbeeld zitten maar een paar properties die is wellicht wat simpeler te begrijpen :)

In MSDN staat ook een uitstekend artikel over het schrijven van usercontrols en welke events je moet gebruiken enzo. Ik zoek het even op.

[edit]
Opgezocht: Creating an ActiveX Control
Dan moet je vooral even naar "Life and Times of a UserControl Object" kijken voor uitleg over de verschillende events.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 08-09 13:41

Crazy D

I think we should take a look.

Ik dacht dat in VB5 er ook al een control interface wizard was?
Check je Add-ins menu (en dan je Add-in manager).
Je kan idd zoals hierboven al staat het prima zonder doen, alleen als je een standaard control uitbreidt, of een eigen control maar met properties en methods die ook in standaard controls zitten, zit je je helemaal suf te typen :) Een paar klikjes in de wizard is dan wel makkelijker :) (maar ja dan moet die wizard er wel bij zitten, misschien ben ik wel in de war :P VB5 is alweer zo lang geleden ;))

Exact expert nodig?


Verwijderd

Topicstarter
Hey, allemaal kei toppie wat jullie hebben uitgelegd, nu nog een vraagje (sorry...). Ik weet nu hoe ik een property ofzow moet maken met een invoerveld (Public Property Get Value() As String). Hoe kan je een True en False ding en een list met opties maken?

Verwijderd

Topicstarter
Niemand??? :(

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 08-09 14:52

johnwoo

3S-GTE

Op maandag 13 mei 2002 20:15 schreef BasjeBanaantje het volgende:
Hey, allemaal kei toppie wat jullie hebben uitgelegd, nu nog een vraagje (sorry...). Ik weet nu hoe ik een property ofzow moet maken met een invoerveld (Public Property Get Value() As String). Hoe kan je een True en False ding en een list met opties maken?
Op maandag 13 mei 2002 20:31 schreef BasjeBanaantje het volgende:
Niemand??? :(
1. Na een kwartiertje kicken met zo'n norse opmerking helpt je niet echt ;)

2. Als je je property gewoon Boolean maakt (Public Property Get Blaat() As Boolean en Public Property Let Blaat(newValue As Boolean) ) dan zal er een True/False combo verschijnen in het properties venstertje in de VB IDE :)
Een list met opties maak je met een enum. Ik geloof dat als je een public enum maakt, je ook een combo krijgt in het properties venstertje met die waarden erin.

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


Verwijderd

Op maandag 13 mei 2002 20:31 schreef BasjeBanaantje het volgende:
Niemand??? :(
:'( Zitten we je hier gigantisch (en snel) te helpen, is er een kwartiertje niks, en dan dit ;(

Verwijderd

Topicstarter
ok, thx

Verwijderd

Topicstarter
Ow gvd, weer een vraag. Sorry, echt de laatste. Ik heb dus nu een usercontrol gemaakt, en ik wil in het script daarvan ergens Unload Me zetten, dus dat hij de form unload waar hij dan in werkt, maar dat magie niet volgens VB :( Weet iemand hoe je dit toch kan oplossen?

Verwijderd

Op maandag 13 mei 2002 20:59 schreef BasjeBanaantje het volgende:
Ow gvd, weer een vraag. Sorry, echt de laatste. Ik heb dus nu een usercontrol gemaakt, en ik wil in het script daarvan ergens Unload Me zetten, dus dat hij de form unload waar hij dan in werkt, maar dat magie niet volgens VB :( Weet iemand hoe je dit toch kan oplossen?
Wees blij! Zoiets wil je niet! Denk eens na: je gebruikt een componentje, en de programmeur is zo aardig geweest om al jouw forms te unloaden... bedankt... dus dat gaat hopelijk niet lukken.

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 02-09 19:44

Gerco

Professional Newbie

Op maandag 13 mei 2002 21:01 schreef KoenM het volgende:
Wees blij! Zoiets wil je niet! Denk eens na: je gebruikt een componentje, en de programmeur is zo aardig geweest om al jouw forms te unloaden... bedankt... dus dat gaat hopelijk niet lukken.
Om zoiets te maken geef je een event (UnloadOwner ofzo?) aan je control en fire je die event. In de form vang je die event op en roep je unload me.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!

Pagina: 1