Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Font für RichEdit oder Listbox (WX-C Designer)

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Lothar Schirm



Anmeldungsdatum: 24.04.2006
Beiträge: 63
Wohnort: Bayern

BeitragVerfasst am: 03.03.2014, 16:37    Titel: Font für RichEdit oder Listbox (WX-C Designer) Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 03.03.2014, 20:06    Titel: Antworten mit Zitat

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. traurig
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lothar Schirm



Anmeldungsdatum: 24.04.2006
Beiträge: 63
Wohnort: Bayern

BeitragVerfasst am: 03.03.2014, 20:39    Titel: Antworten mit Zitat

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!
lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz