Hi,
wie ich ein TextGadget einfärben kann hab ich im PureArea CodeArchiv bereits gefunden. Meine Frage ist: Wie bekomme ich den Text in einem Textgadget rot hin, ohne die Hintergrundfarbe zu ändern??? Ich setze den Text mit SetGadgetText, nicht mit DrawText.
Farbiges Textgadget
meinst Du das so:
Dafür brauchts aber PB 4.00b1|2 
Code: Alles auswählen
If OpenWindow(0,0,0,322,275,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"StringGadget Flags") And CreateGadgetList(WindowID(0))
StringGadget(0,8, 10,306,20,"Normal StringGadget...")
SetGadgetColor(0, #PB_Gadget_FrontColor,$0000ff)
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf

Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Tatsächlich - passt... Danke! 
Und wie bekomme ich den Text in dem TextGadget jetzt noch Fett? Ich nutze Standardschriftarten und will jetzt auf keinen Fall eine fixe Schriftart (z.B. "MS Sans Serif") in Schriftgröße XY mit Stil Fett per LoadFont laden, wenn der User evtl. eine andere Systemschriftart gewählt hat. Soll also ganz "normale" Schrift sein, "nur" fett halt...

Und wie bekomme ich den Text in dem TextGadget jetzt noch Fett? Ich nutze Standardschriftarten und will jetzt auf keinen Fall eine fixe Schriftart (z.B. "MS Sans Serif") in Schriftgröße XY mit Stil Fett per LoadFont laden, wenn der User evtl. eine andere Systemschriftart gewählt hat. Soll also ganz "normale" Schrift sein, "nur" fett halt...
Such Dich mal durch die diversen Foren und Beispielsourcen.
IMHO sollte das so gehen:
- Systemfont ermitteln
- mit dem Flag "#PB_Font_Bold" laden.
Ersteres ginge mit defaultfontid = GetStockObject_(#SYSTEM_FONT), aber das gibt nur eine ID zurück, wohingegen LoadFont zusätzlich noch Name und Höhe braucht.
Deswegen steh ich auch aufm Schlauch, aber vielleicht stolpert ja einer von den Kundigeren hier drüber und erleuchtet uns
IMHO sollte das so gehen:
- Systemfont ermitteln
- mit dem Flag "#PB_Font_Bold" laden.
Ersteres ginge mit defaultfontid = GetStockObject_(#SYSTEM_FONT), aber das gibt nur eine ID zurück, wohingegen LoadFont zusätzlich noch Name und Höhe braucht.
Deswegen steh ich auch aufm Schlauch, aber vielleicht stolpert ja einer von den Kundigeren hier drüber und erleuchtet uns

Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
moin, moin...
Das hat mich nich in Ruhe gelassen, da hab ich mein Englisch mal zusammengekratzt, im englischen Forum nachgefragt und glaube daraus Folgendes gelernt zu haben: Sieht vielleicht nicht schön aus, läuft aber bei mir unter 400.b2 und benutzt den System_Font.
Dabei würd mich allerdings mal interessieren, wo ich unter W98 oder WXP diesen Font einsehen/festlegen kann.
Ist das nach Deinem Geschmack ?
gespannt...
scholly
Das hat mich nich in Ruhe gelassen, da hab ich mein Englisch mal zusammengekratzt, im englischen Forum nachgefragt und glaube daraus Folgendes gelernt zu haben:
Code: Alles auswählen
;works with PB 4.00 beta 2
Procedure.s getsysfontname(hWnd)
Protected fnt.l,fntName$,fntWeight.l,fntHeight.l,fntStyle.l,fntInfo.LOGFONT
Protected result.l
fnt.l = SendMessage_(hWnd, #WM_GETFONT, 0, 0)
If fnt
GetObject_(fnt, SizeOf(LOGFONT), @fntInfo)
fntName$ = PeekS(@fntInfo\lfFacename)
result$=fntName$
EndIf
ProcedureReturn result$
EndProcedure
Procedure getsysfontheight(hWnd)
Protected fnt.l,fntName$,fntWeight.l,fntHeight.l,fntStyle.l,fntInfo.LOGFONT
Protected result.l
fnt.l = SendMessage_(hWnd, #WM_GETFONT, 0, 0)
If fnt
GetObject_(fnt, SizeOf(LOGFONT), @fntInfo)
fntHeight.l = Round(-fntInfo\lfHeight*72/GetDeviceCaps_(GetDC_(hWnd),#LOGPIXELSY),1)
result=fntHeight.l
EndIf
ProcedureReturn result
EndProcedure
If OpenWindow(0,0,0,322,275,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"StringGadget Flags") And CreateGadgetList(WindowID(0))
StringGadget(0,8,10,306,20,"Normal...")
sys_fontID=LoadFont(2, getsysfontname(GadgetID(0)), getsysfontheight(GadgetID(0)), #PB_Font_Bold)
Debug getsysfontname(GadgetID(0))
Debug getsysfontheight(GadgetID(0))
StringGadget (1,8,35,306,20,"ROT")
SetGadgetColor(1, #PB_Gadget_FrontColor,$0000ff)
StringGadget (2,8,60,306,20, "BOLD")
SetGadgetFont (2,sys_fontID)
StringGadget (3,8,85,306,20, "ROT und BOLD")
SetGadgetColor(3, #PB_Gadget_FrontColor,$0000ff)
SetGadgetFont (3,sys_fontID)
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
Dabei würd mich allerdings mal interessieren, wo ich unter W98 oder WXP diesen Font einsehen/festlegen kann.
Ist das nach Deinem Geschmack ?
gespannt...
scholly
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Danke - dass gefällt mir richtig gut!!!
Hab's eingebaut und was soll ich sagen... Läuft!
Was ich schade irritierend finde ist, wie oft ich trotz der tollen Befehlsvielfalt von PureBasic noch auf die WinAPI zurückgreifen muss. Gut, dass ich dazu die Möglichkeit habe. (Andere Basic-Dialekte verzweifeln hier)

Was ich schade irritierend finde ist, wie oft ich trotz der tollen Befehlsvielfalt von PureBasic noch auf die WinAPI zurückgreifen muss. Gut, dass ich dazu die Möglichkeit habe. (Andere Basic-Dialekte verzweifeln hier)
Tja, das ist halt der "Nachteil", wenns nich nur für WinTendo, sonden auch für MacOS und Linux konzipiert ist - was nicht für alle 3 als PB-internes Kommando umgesetzt werden kann, bleibt vor der Tür und muß über die jeweilige API realisiert werden.real hat geschrieben:Was ich schade irritierend finde ist, wie oft ich trotz der tollen Befehlsvielfalt von PureBasic noch auf die WinAPI zurückgreifen muss.
Hat mich anfangs auch gestört, aber nun mach ich nur nen Vermerk in den Source und überlaß das Ersetzen den Leuten, die meine App eventuell später mal für Mac oder Linux haben wollen.
Bin erst seit November auf dem PB-Zug und habe (besonders jetzt nach der 4.0) " die paar Mark Fuffzich" nicht bereut: prima Basic, tolle Community und besonders durch letztere Klasse Support.
bis denne...
scholly
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)