Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Forma modalna
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004
Forma modalna

Witam

Jak wywołać formę modalną aby po pojawieniu się na ekranie wykonywana była jakaś procedura tej formy np.

Mam dwie formy FMain i FModal

W formiw fModal jest procedura "Bla bla"

Z fMain wywołuję FModal i w momencie gdy jest już widoczna zaczyna się wykonywać procedura "Bla Bla"

Zdarzenie Activate formy modalnej odpada.


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

14-03-2005 21:09
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
mikmas
From Łódź Stadt




Typ: neutral
Postów: 772
Zarejestrowany: Apr 2003

Nie ma innego wyjścia jak użyć timera z interval = 10ms i wyłączyć go od razu po wywołaniu jego zdarzeniu


_____________________________________________
4C;65;70;69;65;6A;20;62;79;9C;20;73;69;EA;20;
62;61;72;64;7A;69;65;6A;20;73;6B;6F;6E;63;65;
6E;74;72;6F;77;61;B3;20;6E;61;20;6F;64;70;6F;
77;69;65;64;7A;69;2C;20;61;20;6E;69;65;20;6E;
61;20;72;6F;7A;73;7A;79;66;72;6F;77;79;77;61;
6E;69;75;20;3A;50

14-03-2005 21:12
Pokaż profil mikmas  Wyślij email do mikmas   Odwiedź stronę mikmas       3632553
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Hmmm nieciekawie

Rozwiązałem to w trochę inny sposób

Otóż w zdarzeniu Activate dodałem taki kod

If X = False Then
    X = True
    Call Moja procedura
End If

X jest zmienną prywatną formy modalnej

Ale dziwna rzecz bo gdy procedura się wykona wywoływane jest Unload Me i zmienna X po ponownym wywołaniu formy powinna być równa False a jest rówma True - hmmm ciekawe


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

14-03-2005 21:35
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Aby zmienna X przyjęła ponownie wartość poczatkową należy użyć kodu (oczywiście zakładam ,że zmienna jest zadeklarowana w formie frmModal i poniższy fragment kodu znajduje się również  w tej formie, bo jest jak piszesz modalna):


Unload Me
'''' poniższe można również zamiast w tym miejscu użyć bezpośrednio w zdarzeniu Unload formy frmModal
Set frmModal = Nothing

gdzie frmModal jest nazwą Twojej formy modalnej. Bez tego nie zachodzi bowiem zdarzenie Terminate formy frmModal.

Szersze objaśnienie tego zagadnienia znajdowało się na stronie (Randy Birch)http://www.devdex.com/vb/message.asp?p=640&r=4321340 lecz jak widzę jest ona niedostępna, więc przytoczę zanotowany przeze mnie niegdyś fragment:


Technically, the Set = Nothing line for the form causes the form's Terminate
event to fire. The Unload event destroys the GUI portion of the form; the
Terminate event destroys the variables associated with the form. (Sometimes
its possible for an app to unload a form (without a Set=) and on reshowing
the form, find its form-level variables still contained the values
associated with the previous showing of the form).
You can move the Set= line as the last line in the Unload event, so your
startup code is a simple call to show the form



P.S. Nie będziesz miał tego zjawiska równiez wtedy dgy zmienną X zadeklarujesz następująco:

Private mvarX As Boolean 'local copy
Public Property Let X(ByVal vData As Boolean)
    mvarX = vData
End Property
Public Property Get X() As Boolean
    X = mvarX
End Property


lub w zdarzeniu Initialize formy modalnej frmModal dokonasz operacji (co na to samo co wyżej "wychodzi" ):

X=False

no ale to nie jest chyba sprawa tylko tej jednej zmiennej.... "jakby co".

Nie wiem czy jasno wytłumaczyłam...

[Post edytowany dnia 15-03-2005 00:50 przez karolinavb]


_____________________________________________
Karolina

15-03-2005 00:08
Pokaż profil karolinavb  Wyślij email do karolinavb   
Wszystkich odpowiedzi: 3 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1