Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Activate a Initialize
Tamgo




Typ: neutral
Postów: 129
Zarejestrowany: Aug 2004
Activate a Initialize

Czy może mi ktoś w miarę precyzyjnie wyjaśnić różnice pomiędzy tymi pojęciami. Dodam, że jestem początkującym.

Tamgo

15-12-2004 11:47
Pokaż profil Tamgo  Wyślij email do Tamgo        4484571
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

Initialize - instrukcje zawarte w tym zdarzeniu wykonywane są podczas ładowania formy do pamięci

Activate - instrukcje są wykonywane zawsze po aktywacji formy - czyli po ustawieniu focusu na formie. Przykład:
W module
Sub Przycisk1_Kliknięcie()
UserForm1.Show vbModeless
UserForm2.Show vbModeless
End Sub


W kodzie formy
Private Sub UserForm_Activate()
Static t As Integer
t = t + 1
UserForm1.Caption = "Aktywacja nr:" & t
End Sub


Private Sub UserForm_Initialize()
Beep
End Sub


Po tej akcji załadują się dwie formy - klikaj raz w jedną raz w druga i obserwuj Tytuł formy nr 1


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

15-12-2004 18:46
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
Tamgo




Typ: neutral
Postów: 129
Zarejestrowany: Aug 2004
Re:

To wyjaśniło trochę moich wątpliwości, lecz nie do końca. Przepraszam za moją dociekliwość. Zadam pytanie pomocnicze, później wyjaśnię, skąd ta dociekliwość.
Pytanie: Jakie zdarzenie należałoby zapisać prawidłowo?
Wg mojego rozumowania między nimi nie ma specjalnej różnicy, niemniej wychodzę z założenia, że jeśli ktoś je "wynalazł", to w jakimś określonym celu. A chciałbym to wiedzieć. I tu przepraszam - z całym szacunkiem dla twojej fatygi - nie wyjaśniłeś mi do końca.
Teraz dlaczego drążę temat: Otóż zbudowałem dosyć zaawansowaną aplikację - dziwisz się jak to możliwe, bez podstawowych znajomości - oparta jest na naprawdę prostych funkcjach. Ale nie o tym.
Zastosowałem w niej min. obiekty ComboBox. Zauważyłem takie oto zjawisko. Do jednego z nich mój program musi załadować dosyć długą listę produktów (ok. 50 sztuk asortymentu). I w pewnym momencie ładował mi je podwójnie. Nie przeszkadzało to w prawidłowym wyborze, ani w trakcie pracy programu, ale tak przecież nie może być. Przypominam sobie, że wówczas chyba użyłem zdarzenia Activate. Metodą prób i błędów zauważyłem, że po zmianie zdarzenia na Initialize problem jakby zniknął. Tylko ja nadal żyję brakiem pełnej świadomości - dlaczego?
Pozwolę sobie korzystając z Twojej uprzejmości zadać jeszcze jedno pytanie.
W jaki sposób skompilować swoją aplikację i co po skompilowaniu w efekcie  otrzymam. Robiłem jedną próbę - i tak naprawdę nie wiem co zrobiłem. W moim mniemaniu powinienem otrzymać jeden plik .EXE.
Nie znalazłem go......rany boskie niewiedza jest bolesna. Dodam, że próbowałem to zrobić w menu DEBUG > Compile VBA Project.
PS.
Czy  skompilowany projekt może "istnieć" samodzielnie innymi słowy, czy można go rozpowszechniać jak inne aplikacje, czy też jest nierozerwalnie związany z jednym komputerem? Jak to właściwie jest?

Pozdrawiam Tamgo

16-12-2004 14:37
Pokaż profil Tamgo  Wyślij email do Tamgo        4484571
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

chyba powineneś zrozumieć powyzszy kod ktory Ci wypisałem. Dla opcji Activate Twój Combo zawsze będzie powiększał swoją listę instrukcją ADD.Item

natomiast w Initialize załaduję się tylko raz, gdyż initialize jest tylko wykonywane podczas ładowania formy do pamięci czyli jej uruchamiania
Opcja Compile VBA służy do sprawdzania czy są błędy w Twoim kodzie i nie jest ona do budowania pliku exe, gdyż VBA jest kompilowany w trakcie uruchomienia dowolnego makra lub zdarzenia, czyli to jest tak jakby kompilator JIT (Just in Time)


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

16-12-2004 14:46
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

Opis zdarzeń:

Initialize - ładujesz raz, używasz cały czas! Czyli, wykonuje się tylko raz - w momencie uruchamiania danego formularza. Nie ma znaczenia późniejsze zachowanie formularza.

Activate - wykonuje się zawsze, gdy kontrolka, formularz uzyska fokus - stanie się aktywna. Czyli, mając 2 formularze (jak w przykladzie Piotra), gdy na przemian aktywujesz (pokazujesz) jeden lub drugi, to zdarzenie activate będzie wykonywało się zawsze, gdy dany element stanie się aktywny.

Piotr podał Ci bardzo dobry przykład, tylko musisz go dobrze przeanalizować


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

16-12-2004 21:59
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
Wszystkich odpowiedzi: 4 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1