ďťż
Lemur zaprasza
Strona: [ > ] 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 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 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 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 karolinavb Typ: neutral Postów: 467 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 Wszystkich odpowiedzi: 4 :: Maxymalnie na stronę: 20 Strona: [ > ] z 1 |