Seite 1 von 1

Focus bei CheckboxGadget anzeigen lassen (XP-Skin)

Verfasst: 13.06.2005 21:21
von Jake
Ich möchte das beim CheckboxGadget dieser gestrichelte Rahmen angezeigt wird. Wenn ich mit Tab zwischen den Boxen wechsel dann kann ich die auch mit Space auf 1 bzw. 0 setzen aber ich kann nicht sehen wo sich der Focus befindet.
Gibt es eine Möglichkeit das einzustellen, so das der Rahmen um den Text vom CheckboxGadget gezeichnet wird?

Verfasst: 14.06.2005 20:50
von Jake
Keiner eine Idee?

Kann mir dann evtl. jemand ein kleines Beispiel geben wie man mit WinAPI ein CheckboxGadget erstellt? Ich wühle gerade im PSDK aber bin daraus noch nicht schlau geworden.

Verfasst: 15.06.2005 11:23
von bobobo
Wenn ich ne Checkbox mit PB fabrizier hat die bei Erhalt des Fokus auch diesen Rahmen drumrum .. allerdings liegt der Rahmen um den zur Checkboxgehörigen Text !! Wenn der fehlt , fehlt auch der Rahmen.

Falls Du keinen Text hast kannst Du ja ein Frame3d_Gadget versteckt um die CheckBox drumrummalen und bei Erhalt des Fokus' hervorholen

Code: Alles auswählen

; PureBasic Visual Designer v3.92 build 1460
;- Window Constants
;
Enumeration
  #Window_0
  #Radio_0
  #String_0
  #Button_0
  #Frame3D_0
  #CheckBox_0
EndEnumeration

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 0, 600, 300,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
    If CreateGadgetList(WindowID())
      OptionGadget(#Radio_0, 120, 100, 100, 30, "Radio")
      StringGadget(#String_0, 170, 50, 110, 30, "String")
      ButtonGadget(#Button_0, 200, 180, 110, 30, "Knopf")
      Frame3DGadget(#Frame3D_0, 280, 90, 170, 70  , "")
      CheckBoxGadget(#CheckBox_0, 290, 100, 150, 50, "ich könnte auch leer sein")
      
    EndIf
  EndIf
EndProcedure
Open_Window_0()
Repeat ; Start of the event loop
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  WindowID = EventWindowID() ; The Window where the event is generated, can be used in the gadget procedures
  GadgetID = EventGadgetID() ; Is it a gadget event?
  EventType = EventType() ; The event type
  ;You can place code here, and use the result as parameters for the procedures
  ;FokusCheckRoutine
  If GetFocus_() = GadgetID(#CheckBox_0)
    HideGadget(#Frame3D_0,0)
  Else
    HideGadget(#Frame3D_0,1)
  EndIf
  If Event = #PB_EventGadget
    HideGadget(#Frame3D_0,1)
    If GadgetID = #Radio_0
    ElseIf GadgetID = #String_0
    ElseIf GadgetID = #Button_0
    ElseIf GadgetID = #CheckBox_0
    EndIf
  EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End

Verfasst: 15.06.2005 18:29
von Jake
Wenn ich eine Checkbox erstelle hat die keinen Rahmen drum. Einen Text habe ich eingegeben. Ich habe nur einen Rahmel wenn ich die XP-Skin Unterstützung abschalte, das will ich aber nicht.

Man kann mit XP-Skin Unterstützung den Rahmen um den Text nicht sehen!

Verfasst: 15.06.2005 19:38
von bobobo
Dann mach das doch mit nem Frame3Dgadget wie oben im Code..

Sorry xp-styling kann ich nicht testen.. das XP-Styling ist immer das erste was ich ausmache auf nem Rechner mit XP drauf.

und nun hab ich Feierabend.