Guten Morgen,
also ich bin nicht fündig geworden und soweit ich inzwischen durchblicke, denke ich auch, dass es mit "DrawText()" nicht möglich ist einen Zeilenumbruch einzugeben, oder? - Wie kann ich es dann anstellen, dass in einem kleinen Fenster der Text trotzdem in einer neuer Zeile fortgesetzt wird und nicht in der alten dann "irgendwo im nirgendwo" verschwindet?
Liebe Grüße,
Simon
Zeilenumbruch
hi Simon,
ich würde es ungefähr so machen:
mfG
Tobi
ich würde es ungefähr so machen:
Code: Alles auswählen
Procedure DrawTextLines(Text$, Trenner$, x, y)
For index = 1 To CountString(Text$, Trenner$) + 1
Locate(x,y)
DrawText(StringField(Text$, index, Trenner$))
y + 16
Next
EndProcedure
Text$ = "zeile 1" + #LF$ + "zeile 2" + #LF$ + "zeile 3" + #LF$ + "zeile 4"
If OpenWindow(0,0,0,310,110,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"ImageGadget") And CreateGadgetList(WindowID(0))
If CreateImage(0, 300, 100)
StartDrawing(ImageOutput())
DrawTextLines(Text$, #LF$, 5, 5)
StopDrawing()
ImageGadget(0, 5,5,300,100,UseImage(0))
EndIf
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
Tobi
- Hroudtwolf
- Beiträge: 1416
- Registriert: 30.10.2004 23:33
- Kontaktdaten:
Ich weiß zwar nicht genau was du meinst. Aber falls du das meinen solltest :
Da kannst du einen Text direkt mit Zeilenumbruch direkt in das Fenster tippen.
Da kannst du einen Text direkt mit Zeilenumbruch direkt in das Fenster tippen.
Code: Alles auswählen
Declare GetTextField()
Declare AddTextField()
Dim text$(50)
zeile=1
If OpenWindow (1,200,200,500,500,#pb_window_systemmenu,"zeilenumbruch")
GetTextField()
If CreateGadgetList (WindowID())
ImageGadget (1,0,0,500,500,UseImage (1),#pb_image_border)
EndIf
AddKeyboardShortcut (1, #PB_Shortcut_A,1)
AddKeyboardShortcut (1, #PB_Shortcut_B,2)
AddKeyboardShortcut (1, #PB_Shortcut_C,3)
AddKeyboardShortcut (1, #PB_Shortcut_D,4)
AddKeyboardShortcut (1, #PB_Shortcut_E,5)
AddKeyboardShortcut (1, #PB_Shortcut_F,6)
AddKeyboardShortcut (1, #PB_Shortcut_G,7)
;und so weiter
AddKeyboardShortcut (1, #PB_Shortcut_RETURN,50)
AddKeyboardShortcut (1, #PB_Shortcut_BACK,51)
Repeat
evID.l=WaitWindowEvent()
Select evID.l
Case #pb_eventmenu
Select EventMenuID()
Case 1
text$(zeile)=text$(zeile)+"A"
AddTextField()
Case 2
text$(zeile)=text$(zeile)+"B"
AddTextField()
Case 3
text$(zeile)=text$(zeile)+"C"
AddTextField()
Case 4
text$(zeile)=text$(zeile)+"D"
AddTextField()
Case 5
text$(zeile)=text$(zeile)+"E"
AddTextField()
Case 6
text$(zeile)=text$(zeile)+"F"
AddTextField()
Case 7
text$(zeile)=text$(zeile)+"G"
AddTextField()
Case 50;Enter
zeile=zeile+1
AddTextField()
Case 51;Löschen
text$(zeile)=Mid(text$(zeile),1,Len(text$(zeile))-1)
AddTextField()
EndSelect
EndSelect
Until evID.l=#pb_event_closewindow
End
EndIf
Procedure GetTextField()
If CreateImage (1,500,500)
If StartDrawing (ImageOutput())
DrawingMode(1)
Box (0,0,500,500,RGB(255,255,255))
FrontColor (0,0,0)
For x=1 To 49
aktuell$=text$(x)
If aktuell$<>""
Locate (0,x*12)
DrawText(aktuell$)
EndIf
Next x
StopDrawing ()
EndIf
EndIf
EndProcedure
Procedure AddTextField()
GetTextField()
SetGadgetState (1,UseImage (1))
EndProcedure
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
ich hab mir jetzt die codes meiner vorredner nicht reingezogen.
mein vorschlag als generelle lösung wäre, eine procedure zu schreiben,
die den übergebenen text in einzelne zeilen zerlegt und diese untereinander ausgibt.
so etwas ähnliches macht wohl auch der code von chaoskid...
mein vorschlag als generelle lösung wäre, eine procedure zu schreiben,
die den übergebenen text in einzelne zeilen zerlegt und diese untereinander ausgibt.
so etwas ähnliches macht wohl auch der code von chaoskid...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.