|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Lothar Schirm
Anmeldungsdatum: 24.04.2006 Beiträge: 63 Wohnort: Bayern
|
Verfasst am: 03.03.2014, 16:37 Titel: Font für RichEdit oder Listbox (WX-C Designer) |
|
|
Ich möchte gern für ein RichEdit oder auch für eine Listbox, die ich mit dem WX-C Designer kreiert habe, Schriftart und Größe ändern, konkret: Courier New oder Consolas (wichtig ist die feste Zeichenbreite, so dass man Tabellen vernünftig darstellen kann), Schriftgröße 9 oder 10. Das geht ja nur im Code, nicht im Designer. Wahrscheinlich sind das nur drei Zeilen, ich komm aber nicht drauf. Kann mir jemand den Code hierher schreiben?
Und wie bringt man den wxFontDialog zum Laufen (kurzes Beispiel)?
Vielen Dank im voraus! |
|
Nach oben |
|
|
MOD Fleißiger Referenzredakteur
Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 03.03.2014, 20:06 Titel: |
|
|
Das Umstellen der Schriftart ist recht simpel. Mit dem fbc wird seit einiger Zeit eines meiner Beispiele ausgeliefert. Schau mal unter 2%fbc-dir%/examples/GUI/wx-c/fonts_and_colours.bas".
Zum Thema FontDialog: Im Code von wxFBE in der Datei "newdocument.bas" ist ein Beispiel dazu, such dort nach "wxFontDialog". Der Code ist auskommentiert, weil er an diese Position nicht reingehört. Wenn man den Code wieder einkommentiert und wxFBE compiliert, wird der Dialog geöffnet, sobald ein neuer Code-Tab geöffnet wird. hier funktioniert das wunderbar.
Ich habe dir auch ein Beispiel gemacht:
Code: | #Include Once "wx-c/wx.bi"
Declare Function App_OnInit WXCALL ( ) As wxBool
Declare Function App_OnExit WXCALL ( ) As wxInt
Declare Sub button0_event WXCALL ( ByVal event As wxEvent Ptr, ByVal iListener As wxInt )
''
'' Translate FBString to wxString
''
Function fbstring_to_wxString( ByVal fbstr As String ) As wxString Ptr
Dim As wxString Ptr ret
ret = wxString_ctorUTF8( fbstr )
Return ret
End Function
''
'' Translate wxString to FBString
''
Function wxString_to_fbstring( ByVal wxstr As wxString Ptr ) As String
Dim As String ret
Dim As Integer i
For i = 0 To wxString_GetLength( wxstr )
If wxString_CharAtUTF16( wxstr, i ) <> 0 Then
ret += Chr( wxString_CharAtUTF16( wxstr, i ) )
EndIf
Next
Return ret
End Function
Dim Shared As wxApp Ptr wx_app
Dim Shared As wxFrame Ptr wx_frame
Dim Shared As wxPanel Ptr wx_panel
Sub showFontDialog ( )
Dim As wxFont Ptr font = wxFont_ctor( 10, wxMODERN, wxNORMAL, wxNORMAL, WX_FALSE, 0, 0 )
Dim As wxFontData Ptr fontData = wxFontData_ctor( )
Dim As wxFontDialog Ptr fontDialog = wxFontDialog_ctor( )
wxFontDialog_Create( fontDialog, wx_frame, fontData )
Print wxFontDialog_ShowModal( fontDialog ), wxOK
If wxFontDialog_ShowModal( fontDialog ) = wxOK Then
fontData = wxFontDialog_GetFontData( fontDialog )
font = wxFontData_GetChosenFont( fontData )
EndIf
End Sub
Function App_OnInit WXCALL ( ) As wxBool
wx_frame = wxFrame_ctor( )
wxFrame_Create( wx_frame, WX_NULL, -1, fbstring_to_wxString( "Example" ), -1, -1, 480, 340, wxFRAME_DEFAULT_STYLE Or wxCLOSE_BOX Xor wxMAXIMIZE_BOX Xor wxRESIZE_BORDER, WX_NULL )
wx_panel = wxPanel_ctor2( wx_frame, -1, -1, -1, -1, -1, 0, WX_NULL )
''
'' create widget richtext0
''
Dim As wxTextCtrl Ptr richtext0
richtext0 = wxTextCtrl_ctor( )
wxTextCtrl_Create( richtext0, wx_panel, -1, fbstring_to_wxString( "" ), 10, 10, 460, 260, wxTE_PROCESS_ENTER Or wxTE_MULTILINE Or wxTE_Rich Or wxTE_RICH2, 0, 0 )
Dim As wxFont Ptr font = wxFont_ctor( 8, wxMODERN, wxNORMAL, wxNORMAL, WX_FALSE, 0, 0 )
wxFont_SetPointSize( font, 12 )
wxFont_SetFaceName( font, fbstring_to_wxString( "Comic Sans MS" ) )
wxWindow_SetFont( richtext0, font )
''
'' create widget button0
''
Dim As wxButton Ptr button0
button0 = wxButton_ctor( )
wxButton_Create( button0, wx_panel, -1, fbstring_to_wxString( "Font" ), 10, 280, -1, 24, 0, 0, 0 )
wxEvtHandler_Proxy( button0, @button0_event)
wxEvtHandler_Connect( button0, wxEvent_EVT_COMMAND_BUTTON_CLICKED( ), -1, -1, 0 )
wxGauge_Create(wxGauge_ctor(),wx_panel,-1,0,0,0,0,0,0,0,0)
wxWindow_Show( wx_frame, 1 )
wxApp_OnInit( wx_app )
Return 1
End Function
Function App_OnExit WXCALL ( ) As wxInt
Return wxApp_OnExit( wx_app )
End Function
Sub button0_event WXCALL ( ByVal event As wxEvent Ptr, ByVal iListener As wxInt )
Select Case wxEvent_GetEventType( event )
Case wxEvent_EVT_COMMAND_BUTTON_CLICKED
showFontDialog( )
End Select
End Sub
''main
wx_app = wxApp_ctor( )
wxApp_RegisterVirtual ( wx_app, @App_OnInit, @App_OnExit )
wxApp_Run( 0, 0 )
|
Ich weiß nicht genau warum, allerdings wird in diesem Fall kein Dialog angezeigt, ShowModal() liefert sofort die ID für "canceled" zurück. Eventuell hat es was hiermit zu tun: http://social.msdn.microsoft.com/Forums/en-US/cf8f2f9d-46f2-4bbd-9efe-e8318acf1316/printdialogshowdialog-returns-cancel-immediately-in-windows-7-os-with-64-bit?forum=winforms
Ich habe momentan leider keine Lösung für dieses Problem. |
|
Nach oben |
|
|
Lothar Schirm
Anmeldungsdatum: 24.04.2006 Beiträge: 63 Wohnort: Bayern
|
Verfasst am: 03.03.2014, 20:39 Titel: |
|
|
Vielen Dank! Mit dem Beispiel "fonts_and_colours.bas" und der WX-Hilfe bin ich schon klargekommen, ich habe schon ein Richedit mit einer schönen Tabelle erzeugt. Und das mit dem FontDialog ist mir nicht so wichtig, ich lege das erst mal zur Seite.
Danke!
|
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|