# ändern des icons der msg-box



## thecooper (26. Juli 2003)

hi,

ich hab folgendes problem. wenn man ne msgbox erstellt kann man j alle eigenschaften angeben. so auch das bildchen (z.B. vbInformation). kann man auch ein selbst definiertes icon nehmen. schon mal danke.

bye, coop.


----------



## Numiel (29. Juli 2003)

*Eigenes Form*

Wenn ich es richtig gesehen habe, gibt es bei einer MsgBox nur die vordefinierten Standard-Bilder zur Auswahl.

Wenn Du aber unbedingt ein eigenes brauchst, erstell Dir doch ein eigenes Formular mit Icon, Label und Buttons und übergib einfach den jeweiligen Hinweistext an das Formular (z. B. über eine globale Variable des Formulars, die beim Anzeigen ins Label gesetzt wird oder als Übergabeparameter einer Prozedur)


----------



## thecooper (30. Juli 2003)

das mit dem eigenen formular erstellen hab ich mir auch schon gedacht. aber wie meinst du das mit der globalen variable. geht das? ich kann variablen nur innerhalb des gleichen formulars wieder abrufen. also muss ich den text der in der msgbox stehen soll immer in einer textdatei zwischenspeichern und dann in der von mir erstellten msgbox wieder abrufen. ziemlich lästig. erklär mir das mal mit der formular-übergreifenden variable.


----------



## Numiel (30. Juli 2003)

*Globale Variable im Formular*

Es gibt zwei Möglichkeiten:
a) Du brauchst eine öffentliche Variable, um einem Formular einen Wert zu übergeben
b) Du brauchst projektumfassende Variable

Bei a) erstellst Du Dein Form und lässt Dir den Quelltext anzeigen.
Ganz oben sollte (sofern voreingestellt bie VS)

```
Option Explicit
```
stehen. Direkt darunter definierst Du dann Deine Variable als

```
Public strMsgText as String
```
Auf diese öffentliche Variable kannst Du aus einem anderen Form durch _frmMsgForm.strMsgText_ zugreifen (Sofern Dein MessageBox-Form frmMsgForm heißt). Für Deine Zwecke müsste das reichen.

Für Möglichkeit b) erstellst Du ein neues Modul (oder verwendest eines, das evtl schon besteht) und trägst dort

```
Option Explicit
Global strMsgText as String
```
ein. (Wobei Public anstelle von Global genauso funktionieren müsste, wobei ich hier Global vorziehe)
Diese Variante erlaubt es Dir, von jedem Form im Projekt durch _strMsgText_ auf den Inhalt der Variablen zuzugreifen. Da sich die Variable in einem Modul befindet und als "global" deklariert ist, brauchst du keinen Formular- bzw. Modulnamen voranzustellen. Das gleiche gilt übrigens auch für im Modul definierte public Funktionen oder Prozeduren.


----------



## thecooper (30. Juli 2003)

ok, danke. hat alles gut geklappt.


----------



## NRFi (31. Juli 2003)

guggsu...
keine ahnung, ob das klappt, hab das nur mal in der api gefunden..
bei MSGBOXPARAMS gibts nämlich was von icon.

Public Declare Function MessageBoxIndirect Lib "user32" 

Alias "MessageBoxIndirectA" (lpMsgBoxParams As MSGBOXPARAMS) As Long
Public Type MSGBOXPARAMS
	cbSize As Long
	hwndOwner As Long
	hInstance As Long
	lpszText As String
	lpszCaption As String
	dwStyle As Long
	lpszIcon As String
	dwContextHelpId As Long
	lpfnMsgBoxCallback As Long
	dwLanguageId As Long
End Type


----------



## Thomas Darimont (31. Juli 2003)

Servus!


```
MsgBox "Hallo", vbCritical
MsgBox "Hallo", vbExclamation
MsgBox "Hallo", vbInformation
MsgBox "Hallo", vbQuestion
```

Gibt zumindest einmal 4 default Icons ...

Gruß Tom


----------

