Tvorba tříd a ActiveX komponent

Proměnné a vlastnosti
Když budete chtít v prvku použít nějakou proměnnou, stačí ji normálně deklarovat (použitím Dim nebo Private). Pokud ale budete chtít, aby tato proměnná byla přístupná pro kontainer (což znamená pro formulář, na kterém je prvek), musíte vytvořit vlastnost.

Když používáte komponentu jako je například TextBox, tak máte přístup k mnoha vlastnostem. Některé z nich jsou standardní vlastnosti, které mají všechny prvky, jako le Left, Width, Tag nebo Name. Jiné mohou být unikátní pro daný prvek - například Text, Enabled, Locked nebo Multiline. Pokud chcete v prvku nebo třídě vytvořit vlastnost, máte několik možností (seřazeno podle jednoduchosti vytvoření):

1. Použít ActiveX Control Wizard (Project|Add User Control| VB ActiveX Control Wizard
2. Jednoduše deklarovat proměnnou jako Public:
      
Public Enabled As Boolean
3. Vytvoření procedur Property Enabled_Let a Property Enabled_Get

Pravděpodobně se Vám zdá nejjednodušší použití první metody. Ovšem, nejrychlejší není vždy nejlepší. Není úplně od věci pochopit princip práce vlastností namísto nechání veškeré práce na Visual Basicu. Ovšem pokud jste absolutní začátečník, tak je určitě první metoda to pravé pro Vás.

Druhá metoda je také poměrně jednoduchá, ovšem má to háček. Takto deklarovaná vlastnost je přístupná pouze během run-time. Pokud ale tato vlastnost nepotřebuje ověřování hodnoty a není na ní závislá žádná další vlastnost, pak je to docela dobrý postup. Jestliže ale potřebujete být informováni o tom, že se hodnota vlastnosti změnila nebo pokud se klient (projekt, který Vaši komponentu obsahuje) dotazuje na hodnotu vlastnosti, nebo pokud potřebujete na základě hodnoty této vlastnosti měnit jinou vlastnost prvku nebo volat jeho metody, pak musíte použít příkaz Property.

Zde je příklad:

Dim m_BackColor As Long 'privátní proměnná, do které se ukládá hodnota barvy pozadí

'vlastnost BackColor. Je volána, pokud klient požaduje hodnotu  BackColor
Public Property Get BackColor() As Long
    BackColor = m_BackColor
'vrací privátní proměnnou
End Property

'toto je voláno, když klient požaduje změnu hodnoty BackColor
Public Property Let BackColor(ByVal New_BackColor As Long)
    'pokud je proměnná pouze pro čtení (čili klient nemůže změnit její hodnotu),
    'pak tuto proceduru nepotřebujete


    'Před zapsáním nové hodnoty si na tomto místě můžete provést například kontrolu, 
    'zda je barva korektní


    m_BackColor = New_BackColor
'nastavení privátní proměnné na novou hodnotu
    PropertyChanged "BackColor" 
'změna vlastnosti
End Property

Zpět Další

Autor: The Bozena