Textheight(..) und TextWidth(..) gibt im 2DKontext die Höhe und Breite von Texten zurück.
Code: Alles auswählen
;Pb510
;weit entfernt von fertig, nur ne Demo
Global Window_0
Global Button_0, Text_0, Editor_0
Enumeration #PB_Compiler_EnumerationValue
#Font_0
#Font_1
#Font_2
EndEnumeration
LoadFont(#Font_0,"", 12,#PB_Font_HighQuality)
LoadFont(#Font_1,"", 17,#PB_Font_HighQuality)
LoadFont(#Font_2,"", 8,#PB_Font_HighQuality)
Procedure OpenWindow_0()
Window_0 = OpenWindow(#PB_Any, 0, 0, 600, 400, "", #PB_Window_SystemMenu)
Button_0 = ButtonGadget(#PB_Any, 135, 15, 50, 25, "klickemal")
;SetGadgetFont(Button_0, FontID(#Font_0))
Text_0 = TextGadget(#PB_Any, 40, 55, 195, 20, "gna gna gnag gna"+#CRLF$+"gna gna gna gna gna gna gna gna gna")
Editor_0 = EditorGadget(#PB_Any, 40, 255, 195, 20,#PB_Editor_ReadOnly)
SetGadgetText(Editor_0,"gna gna gnag gna"+#CRLF$+"gna gna gna gna gna gna gna gna gna")
SetGadgetColor(Text_0, #PB_Gadget_BackColor,RGB(128,255,255))
;SetGadgetFont(Text_0, FontID(#Font_0))
EndProcedure
Procedure Window_0_Events(event)
Select event
Case #PB_Event_CloseWindow
ProcedureReturn #False
Case #PB_Event_Menu
Select EventMenu()
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
EndSelect
ProcedureReturn #True
EndProcedure
Procedure my_resize(windownr,gadgetnr,fontid,text.s="",type=0)
If text.s=""
text.s=GetGadgetText(gadgetnr) ;
EndIf
Protected two,tw, th, cs
If IsWindow(windownr)
StartDrawing(WindowOutput(windownr))
DrawingFont(fontid)
If type=1
cs=CountString(text,#CRLF$)+1
For c=1 To cs
th+TextHeight(text)
two= TextWidth(StringField(text,c,#CRLF$))+8
If two>tw
tw=two
EndIf
Next c
Else
tw= TextWidth(text)+8
th= TextHeight(text)+8
EndIf
ResizeGadget(gadgetnr,#PB_Ignore,#PB_Ignore,tw, th)
SetGadgetFont(gadgetnr,fontid)
SetGadgetText(gadgetnr,text)
StopDrawing()
EndIf
EndProcedure
OpenWindow_0()
my_resize(Window_0,Button_0,FontID(#Font_0))
my_resize(Window_0,Text_0,FontID(#Font_1),"Für Textgadgets ist "+#CRLF$+"das eigentlich nicht so gut geeignet"+#CRLF$+#CRLF$+#CRLF$+"oder doch?",1)
Repeat
event = WaitWindowEvent()
gadget=EventGadget()
If event=#PB_Event_Gadget And gadget=Button_0
my_resize(Window_0,Button_0,FontID(#Font_0),"AUA! PASS DOCH AUF!")
my_resize(Window_0,Editor_0,FontID(#Font_2),"mit dem Editorgadget gibt es erstmla Problemchen weil es da Scrollbereiche gibt"+#CRLF$+"das ist doch alles Hühnerkacke"+#CRLF$+#CRLF$+"oder sowas in der Art"+#CRLF$+"das ist doch alles Hühnerkacke oder sowas in der Art",1)
my_resize(Window_0,Text_0,FontID(#Font_1),"ähämm.. es gäbe auch"+#CRLF$+#CRLF$+"noch"+#CRLF$+" das CanvasGadget..",1)
EndIf
Until Window_0_Events(event) = #False
End