|
Icons von Menüpunkten ändern
Das escape GUI bietet die Möglichkeit Menüpunkten ein Icon zu verpassen. Man kann mit einem kleinen
Trick das Symbol, also Icon, auch während der Laufzeit des Programms verändern. Damit bildet diese Möglichkeit
das passende Gegenstück zum Tutorial "Push Buttons in der Symbolleiste".
Kommen wir zur Funktionsweise. Wichtig ist, das beim Anlegen des Menüpunktes ein Frame Image übergeben wird.
Also ein Bild welches mindestens 2 Icons enthält. Das erste Bild soll hierbei leer sein und das Zweite zeigt
den Haken des aktivierten Menüpunktes. Das Bild müsste also so aussehen:
Wie erklären wir nun dem GUI die Änderung des Icons. Nun, der Erste und einfache Teil ist das Eintragen
der Frame Nummer im Parameter der Menü Variablen. Nehmen wir an unser Menüpunkt wurde mit dieser Variable
erzeugt:
mnu_edit_glue.eg_menuitem
Dann muß unsere "Info an das GUI", wenn wir den Haken setzen wollen, so lauten:
mnu_edit_glue\frame = 1
Wenn wir den Haken wegnehmen möchten muß es ergo so lauten:
mnu_edit_glue\frame = 0
Damit das GUI diese Änderung aber auch akzeptiert muß das Menü neu erstellt werden und das ist der schwierigere
Teil, da es keine "offizielle" EG_Draw_Menu() Routine gibt. Inoffiziell gibt es sie aber - als Systemroutine
und das können wir ausnutzen. Etwas schwierig wird das ganze nur dadurch das die Routine keine EG_MenuItem Variable
erwartet, sondern eine EG_Menu Variable, mit welcher man normalerweise gar keinen Kontakt hat und auf welche man
auch keinen direkten Zugriff hat. Man muß diese Variable erst "ausfindig" machen. Um dies zu tun braucht es eine
kleine Suchschleife. Sie kann einfach übernommen werden. Das ROT Gekennzeichnete ist die Variable des Menüpunktes,
sie muß angepasst werden. Für unser Beispiel würde die Schleife so lauten:
For eg_mnu.EG_Menu = Each EG_Menu
If eg_mnu\id = mnu_edit_glue\menu Then eg_draw_menu(eg_mnu): Exit
Next
Diese Schleife muß also nach dem Einstellen des Bild-Frames aufgerufen werden und schon hat man entweder den
Haken im Menü gesetzt, oder man hat ihn weggenommen.
|
|