Hirdetés

Új hozzászólás Aktív témák

  • vilag
    tag

    Gondolom exit eseményt akartál írni, mert az exit sub egy kicsit más. ;)

    A lényeg az, hogy ez nem csak akkor következik be, ha az utolsó aktív vezérlőről van szó, hanem amikor egy frame-n belüli vezérlőről átváltasz egy frame-n kívülire. Ugyanis ilyenkor nem a frame-n belül levő vezérlő exit-je fut le, hanem a frame exit-je.

    Ezt pl. így ki lehet kerülni:

    A userformon belül létrehozol egy Control típusú változót, pl.: Private active As Control

    Ezután az adott frameben levő minden vezérlőjének Enter() eseményébe beírod ezt: Set active = Me.<Frame neve>.ActiveControl

    Az adott vezérlőd exit()-jébe pedig ezt:

    Private Sub <Vezérlőd>_Exit(.........
    If Not active Is Nothing Then
    'itt lehet meghívni az eseményt
    End If
    End Sub

    Ez mellett persze még a frame exit()-jét is le kell kezelni:

    Private Sub <Frame neve>_Exit(.......
    If Me.<Vezérlőd>.Name = Me.<Frame neve>.ActiveControl.Name Then
    Set active = Nothing
    'itt ugyanúgy meghívod a vezérlőd exit()-jénél végrehajtandó kódot
    End If
    End Sub

    Igen, ezzel csak az a baj, hogy ez rengeteg plusz melót igényel, tekintve, hogy minden egyes vezérlő Enter() eseményéhez meg kellene írni.

    Az ActiveControl-al már próbákoztunk másik programban, hasonló ok miatt de az nem működik megfelelően.

    Ha pl. van egy formod amin belül van egy frame, amint belül pedig egy vezérlő és a kurzor a vezérlőben villog, tehát elvileg ugye a vezérlő az aktív, az ActiveControl azt fogja eredményül adni, hogy az aktív kontrol a userform.
    Ezúton is köszönjük neki. Így el nem tudom képzelni, hogy ez mire lehet jó.

    Egyébként találtunk akkor erre megoldást, de az hack volt.

    Szóval nekem valami jóval egyszerűbb megoldásra lenne szükségem, mert a framen belül és kívül is van jónéhány vezérlő.

    Üdv, vilag

Új hozzászólás Aktív témák