Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: O co tu chodz?
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004
O co tu chodz?

Witam.

Mam dwie formy Form1 i Form2

Na form1 jest Button "Odpal Form2"

W Form2 jest zadeklarowany Prywatny Typ

Private Type Blabla
Zmienna1 As String
Zmienna2 As String
Zmienna3 As String
End Type

1. Odpalam program i wczytana jest form1

2. Naciskam Button - wczytana jest Form2

3. Poszczególnym zmiennym w BlaBla przypisuję jakieś wartości

4. Wykonuję Wykonuję zdarzenie Form2_Unload

5. Znowu naciskam Button'a i jak się okazuje zmienne w Typie BlaBla nadal przechowują wcześniej wpisane wartości.

O co chodzi ??

Pozdrawiam


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

07-11-2004 18:42
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
losmac
"profesorek"




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

No właśnie - o co chodzi?

A gdzie pytanie?

Czyżby pytanie brzmiało:
Dlaczego po zamknięciu Form2 i ponownym otwarciu tego formularza zmienne w typie Blabla nadal są wypełnione poprzednimi wartościami?

[Post edytowany dnia 07-11-2004 23:47 przez losmac]


_____________________________________________
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ś

07-11-2004 23:47
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
DJK



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

No o to


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

08-11-2004 17:00
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Wykonujesz procedurę Form_Unload, zdarzenia nie można wykonać. A procedura Form_Unload nie robi nic, poza przekazaniem kontroli nad formą programiscie tuż przed jej usunięciem.
Żeby zabić formę użyj komendy Unload:
Unload Form1


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

08-11-2004 21:50
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



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

To znaczy wykonuję to w ten sposób Unload Me albo Unload Form2.

Czemu mam wykonać Unload Form1 ?? <hmmm>
To przecież program mi się całkowicie wyłączy


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

09-11-2004 12:39
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Przjęzyczenie 

miałem na myśli:
Unload Form2


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

09-11-2004 15:40
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Już widzę, co jest źle.
Zasada jest taka - dopuki istnieją jakieś powiązania z obiektem, ten obiekt istnieje.
Może się wydawać, że Unload powinno usuwać wszystkie powiązania. I jeśli w jakiejś zmiennej utworzymy obiekt, a potem potraktujemy go instrukcją Unload, to tak też będzie. Jednak w VB każdy moduł formy ma utworzony globalną zmienną o tej samej nazwie co on sam i przechowującą utworzony an jego podstawie obiekt (czyli naszą formę). Błąd leży w tym, że gdy wpiszemy Unload Form2, to obiekt nie zostanie tak naprawdę zniszczony, bo istnieje jeszcze jedno powiązanie - poprzez zmienną form2. Z tego wynika, że trzeba zniszczyć i tą jedną "nitkę", co robimy przypisując do zmiennej form2 wartość Nothing.
Poniższa procedura własnie do tego służy:
Public Sub KillForm(frmForm2Kill As Form)
    Unload frmForm2Kill
    Set frmForm2Kill = Nothing
End Sub

Jako parametr podajesz formę do zabicia. Po tej operacji obiekt zostanie całkowicie usunięty.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

09-11-2004 16:24
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



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

Muszę to przetestować

Dzięki


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

09-11-2004 17:08
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
Wszystkich odpowiedzi: 7 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1