Seite 2 von 5
Verfasst: 17.10.2008 12:04
von Kaeru Gaman
hm... danke soweit, aber ein Callback war eigentlich nicht was mir vorschwebte...
eine einfache zuweisung über diese WS_STYLE geschichten wäre das gesuchte gewesen.
bleibt die restliche Funktionalität der Buttons denn ungebrochen, wenn man die SetFocus MSG einfach verschluckt?
Verfasst: 17.10.2008 12:08
von NoUser
@marroh
> ChaNinja Skin
das is ja interessant... wieso disabled der skin die Webdings?
dass du die Font hast zeigt ja der andere Skin...
oder sind die shots von verschiedenen rechnern?
wenn ja, schau doch mal bitte nach, ob die Font auf dem Rechner mit dem Ninja skin überhaupt vorhanden ist...
Also beide Skins sind auf den selben Rechner. Ich habe mich auch gefragt warum ChaNinja den Webdings-Font nicht annimmt. Habe aber keine Ahnung warum dass so ist.
Gruss
Martin
Verfasst: 17.10.2008 12:10
von Kaeru Gaman
ok.. danke für die Info...
ich werde mir da keine weiteren Sorgen machen, wenn ein User einen Skin benutzt, der nicht zu den Basis-OS-Funktionen wie "Schriftart einstellen" kompatibel ist, hat er eben eingeschränkte Funktionalität.
Verfasst: 17.10.2008 12:21
von NoUser
Jepp, darüber würde ich mir auch keine Sorgen machen... gibt einfach zu viele verschiedene Skins.
Gruss
Martin
Verfasst: 17.10.2008 13:23
von Fluid Byte
Kaeru Gaman hat geschrieben:hm... danke soweit, aber ein Callback war eigentlich nicht was mir vorschwebte...
eine einfache zuweisung über diese WS_STYLE geschichten wäre das gesuchte gewesen.
Du kannst mit folgendem Code verhindern das man zwischen den Buttons mit der TAB-Taste wechseln kann und somit der Auswahlrahmen jedesmal neu gesetzt wird.
Code: Alles auswählen
For i=0 To 3
SetWindowLong_(GadgetID(i),#GWL_STYLE,GetWindowLong_(GadgetID(i),#GWL_STYLE) ! #WS_TABSTOP)
Next
Aber nur mittels Callback wirst du den Auswahlrahmen wirklich los. Das Ding is' wenn der #WS_TABSTOP Stil durch den obigen Code entfernt wurde, wird trotzdem noch der Auswahlrahmen angezeigt wenn du mit der Maus auf einen Button klickst.
Kaeru Gaman hat geschrieben:Bleibt die restliche Funktionalität der Buttons denn ungebrochen, wenn man die SetFocus MSG einfach verschluckt?
Absolut. Der Auswahlrahmen wird durch das Callback komplett entfernt aber du kannst trotzdem noch zwischen den buttons mit der TAB-Taste switchen (sofern das im Einzelfall gewollt ist).
Verfasst: 17.10.2008 13:54
von Kaeru Gaman
K! thnx 4 info.
Verfasst: 19.10.2008 16:25
von mk-soft
Muss nicht unbedingt ein Button sein. Kann auch ein Text mit SS_NOTIFY werden.
Code: Alles auswählen
#Window = 0
Enumeration
#Button1
#Button2
#Button3
#Button4
EndEnumeration
#Font_Webdings = 0
If Not LoadFont( #Font_Webdings, "Webdings", 48 )
MessageRequester( "Error", "Can't open Font 'Webdings'.", #MB_ICONERROR )
EndIf
If Not OpenWindow( #Window, #PB_Ignore, #PB_Ignore, 336, 96, "Button Test")
MessageRequester( "Error", "Can't open a Window...?", #MB_ICONQUESTION )
EndIf
CreateGadgetList( WindowID( #Window ) )
TextGadget ( #Button1, 16, 16, 64, 64, Chr( $30 ) , #SS_CENTER | #SS_NOTIFY); | #SS_SUNKEN)
SetGadgetFont ( #Button1, FontID( #Font_Webdings ) )
ButtonGadget ( #Button2, 96, 16, 64, 64, Chr( $32 ) )
SetGadgetFont ( #Button2, FontID( #Font_Webdings ) )
ButtonGadget ( #Button3, 176, 16, 64, 64, Chr( $31 ) )
SetGadgetFont ( #Button3, FontID( #Font_Webdings ) )
ButtonGadget ( #Button4, 256, 16, 64, 64, Chr( $72 ) )
SetGadgetFont ( #Button4, FontID( #Font_Webdings ) )
Repeat
EvID = WaitWindowEvent()
Select EvID
Case #PB_Event_Gadget
Select EventGadget()
Case 0 : Debug "Schalter 0 angeklickt!"
Case 1 : Debug "Schalter 1 angeklickt!"
Case 2 : Debug "Schalter 2 angeklickt!"
Case 3 : Debug "Schalter 3 angeklickt!"
EndSelect
EndSelect
Until Evid = #PB_Event_CloseWindow
FF

Verfasst: 19.10.2008 18:24
von Kaeru Gaman
danke für das NOTIFY Flag... und auch für das CENTER, das zentriert wohl auch Vertikal.
muss mir wohl die ganzen SS_ konstanten mal reinziehen...
... aber für den Zweck ist das nich so dolle, es soll ja ein Button sein.
da würde ich wohl eher noch mit dem focusrahmen leben...
Verfasst: 19.10.2008 23:35
von mk-soft
Mit #WM_KILLFOCUS verliert man den Rahmen
Code: Alles auswählen
#Window = 0
Enumeration
#Button1
#Button2
#Button3
#Button4
EndEnumeration
#Font_Webdings = 0
If Not LoadFont( #Font_Webdings, "Webdings", 48 )
MessageRequester( "Error", "Can't open Font 'Webdings'.", #MB_ICONERROR )
EndIf
If Not OpenWindow( #Window, #PB_Ignore, #PB_Ignore, 336, 96, "Button Test")
MessageRequester( "Error", "Can't open a Window...?", #MB_ICONQUESTION )
EndIf
CreateGadgetList( WindowID( #Window ) )
ButtonGadget ( #Button1, 16, 16, 64, 64, Chr( $30 ))
SetGadgetFont ( #Button1, FontID( #Font_Webdings ) )
ButtonGadget ( #Button2, 96, 16, 64, 64, Chr( $32 ))
SetGadgetFont ( #Button2, FontID( #Font_Webdings ) )
ButtonGadget ( #Button3, 176, 16, 64, 64, Chr( $31 ) )
SetGadgetFont ( #Button3, FontID( #Font_Webdings ) )
ButtonGadget ( #Button4, 256, 16, 64, 64, Chr( $72 ) )
SetGadgetFont ( #Button4, FontID( #Font_Webdings ) )
Repeat
EvID = WaitWindowEvent()
Select EvID
Case #PB_Event_Gadget
gadget = EventGadget()
Select gadget
Case #Button1 To #Button4
SendMessage_(GadgetID(gadget), #WM_KILLFOCUS, 0,0)
EndSelect
Select gadget
Case #Button1 : Debug "Schalter 1 angeklickt!"
Case #Button2 : Debug "Schalter 2 angeklickt!"
Case #Button3 : Debug "Schalter 3 angeklickt!"
Case #Button4 : Debug "Schalter 4 angeklickt!"
EndSelect
EndSelect
Until Evid = #PB_Event_CloseWindow
FF

Verfasst: 19.10.2008 23:52
von Kaeru Gaman
hm... ok. immerhin ohne Callback, in die normale Abfrage integrierbar...
aber leider taucht der Rahmen kurz auf, das ist die Callback-lösung eher chique...
ok... danke für die ganzen backgroundinfos, insgesamt wirklich hilfreich.