Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: MsgBox; nie taki prosty temat.
Tamgo




Typ: neutral
Postów: 129
Zarejestrowany: Aug 2004
MsgBox; nie taki prosty temat.

Poniżej jest zapis dla MsgBox, który testuję, a ma wg. mnie ciekawą zaletę; nie pokazuje na listwie (może na belce - grom wie jak to nazwać?) durnowatej ikony systemowej -  w postaci białego kwadracika  swego czasu pytałem na Forum, jak się jej pozbyć (tej ikony kwadracika), lub jak ją zastąpić swoją programową,  ale nikt nie odpowiedział. Ponadto, jest wyświetlany tylko przycisk X (zamykający okienko) i jest on zablokowany, bo okienko jest domyślnie modalne, można je zamknąć wyłącznie klikając na przyciski-polecenia.     

Pyt = MsgBox( _
            prompt:="Nie określono drugiego wskaźnika - czy chcesz go teraz określić?", _
            Title:="Brak żądanego wskaźnika!!", _
            Buttons:=vbYesNo + vbQuestion)
              If Pyt = vbNo Then
                NachPods.Value = True
                Exit Sub
              Else
                Kmt.Show
              End If


Pytanie I
Nie jest to zapis z VB, chyba jest z VBA, a może się mylę. Czy można nim operować na dłuższą metę w VB. Tzn. czy nie będzie z nim jakichś problemów np.; na innych kompach, z kompatybilnością, licencje, referencje itp. Jak na razie u mnie on działa.

Pytanie II
Jak widać z linijek kodu, Msg przypisany jest zmiennej Pyt. Chciałem zmienną tę zastosować globalnie  zmieniać tylko komunikaty (wykorzystując tablicę komunikatów jest ich trochę). Niestety VB się buntuje. Tak więc tak zapisany Msg działa u mnie dobrze jedynie na lokalnych zasięgach, czyli Private. Ja jestem nadal początkujący, co o tym myślą rasowi programiści?

W tej chwili działają u mnie trzy różne typowe dla VB ( moje ) funkcje globalnie wykorzystujące Msg, a każdy typ spełnia określone zadanie ścisły podział ról.  Są b. przydatne, obsługują wiele wątków mojego programu, łącznie z komunikatami o błędach -  zmienia się tylko treść komunikatów odpowiednio do potrzeb. Są proste w przypisywaniu, bo wszystkie cechy są Public zapisane w Module. Wszystko byłoby fajnie, gdyby nie te systemowe kwadracikowe ikony.  Proszę o jakieś sugestie.

22-03-2005 12:49
Pokaż profil Tamgo  Wyślij email do Tamgo        4484571
DJK



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

1. Jest to poprawny zapis w VB a zapis np. Title:=... u możliwia bezpośrednie przypisanie bez konieczności pomijania parametrów opcjonalnych przecinkami np.

Zamiast pisać MsgBox("bla",,"moj tytul" możesz napisać MsgBox("bla",Title:="moj tytul"


2. Hmmm - ja nie zauważyłem żeby forma MsgBox'a
miał jakąś ikonę także nie wiem o jakiej ty ikonie mówisz.

3. Coś nie tak zadeklarowałeś bo zmienną Pyt na 100% można deklarować jako globalną - sprawdziłem to.

Pozdrawiam


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

22-03-2005 16:45
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
Tamgo




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

Oczywiście!! Jak zwykle chciałem przedobrzyć. Ta "kwadracikowa" ikonka brała się się stąd, że do funkcji dla moich Msg wpisałem coś takiego:

Public Function blad(tekst)                   
blad = MsgBox(tekst, vbCritical + vbSystemModal "Błąd!!"
End Function

Gdy usunąłem ten fragment zapisany tłustym drukiem, przestała się pokazywać. Tylko, że teraz okienka Msg nie są modalne, lepiej żeby były, bo program jest bardziej spójny i pewny, co muszę zrobić? Może jednak masz sposób by te "kwadracikowe" ikonki czymś zastąpić, skoro wiesz już skąd są.

[Post edytowany dnia 22-03-2005 23:15 przez Tamgo]

22-03-2005 22:50
Pokaż profil Tamgo  Wyślij email do Tamgo        4484571
DJK



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

Jedyne co mi przychodzi na myśl to wykorzystać funkcję API: MessageBox

P.S. Nadal nie rozumiem jednej rzeczy MsgBox'y zawsze są modalne także nie mam pojęcia coś tam narobił


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

23-03-2005 00:28
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
karolinavb




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

Tomaszu
Nie wiem jaki był Twój plan co do roli jaką w aplikacji czy systemie ma pełnić to okienko.

vbSystemModal- Na pasku tytułowym pojawia się ikonka Windows . Decyduje o pojawieniu się okna komunikatu "nad całym systemem".
Jeśli okno "góruje" nad aplikacją (tzn jest modalne wzgędem aplikacji, z której zostało wywołane) - vbApplicationModal  to użytkownik musi zdecydować się, zanim będzie mógł dalej pracować z aplikacją.

Natomiast jeśli okno "góruje"- vbSystemModal nad systemem - użytkownik musi odpowiedzieć, jeśli chce zrobić coś w systemie tak mówi help, ale dla Windows XP nie jest to prawda, można korzystać w innych aplikacji tyle tylko, że okienko pojawia się na wierzchu innych aplikacji, łatwo można to sprawdzić uruchamiając 2 razy swoją aplikację, jeśli ona na to oczywiście "pozwala" nie ma w tej chwili dostępnego Windows 98, aby tam sprawdzić, a nie korzystałam z takiej opcji bo nie należy raczej tego robić !!! 
(...przydatne gdy program jest np. ukryty a użytkownik korzysta w tym czasie z innych programów)

[Post edytowany dnia 23-03-2005 08:37 przez karolinavb]


_____________________________________________
Karolina

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