Hirdetés

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

  • #90999040
    törölt tag

    Üdv!

    A következő problémára keresek választ:

    Adott egy userformon több frame, melyek szintén több vezérlőt tartalmaznak.
    Egy közbenső frame léptetési sorrendben utolsó vezérlőjének exit subjába írtam meg egy vizsgálatot, amely ebből következőleg a vezérlőből való kilépéskor elvégez bizonyos ellenőrzést.
    A probléma azonban az, hogy ha ez az adott frame utolsó (aktív) vezérlője, akkor az exit sub nem fut le sem akkor ha tabbal közlekedem, sem pedig akkor ha egérrel. Akkor fut le az említett exit sub ha újra visszatérek a frambe (mondjuk egérkattintással)

    Valakinek van ötlete, hogy mi okozza ezt, illetve, hogy hogyan lehet meggyógyítani vagy kitrükközni?

    Előre is köszönöm!

    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

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