Seite 1 von 2
Automatischer Zeilenumbruch bei Editor- oder StringGadget?
Verfasst: 07.11.2004 19:05
von Borstensohn
Hallo erst mal,
ich bin total neu hier und auch ganz neu in PureBasic, und da ist auch schon gleich ein Problem aufgetaucht.
Wenn ich in anderen Programmiersprachen in Edit- oder Memofelder, oder wie sie auch immer sonst genannt werden, Text eingebe, bricht dieser an der Stelle, wo halt der rechte Rand des Feldes ist, automatisch um. Warum nicht bei PureBasic?
Wenn das nicht standardmäßig möglich ist, wie kann ich es selber programmieren? Also, der Benutzer tippt, sagen wir, 80 Zeichen ein, und danach wird auf den Anfang der nächsten Zeile gesprungen.
Ich hab wie verrückt in diesem und im englischen Forum gesucht, aber ich fand keine richtige Antwort. Falls ich was übersehen habe, bitte bedenkt, dass ich Neuling bin.
Bin gespannt auf Antworten, danke schon mal im Voraus.
Gruß
Borstensohn
Verfasst: 07.11.2004 19:36
von Christi
Servus
Code: Alles auswählen
OpenWindow(0, 0, 0, 300, 300, #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, "Test")
CreateGadgetList(WindowID())
x = EditorGadget(0, 0, 0, 300, 300)
SendMessage_(x, #EM_SETTARGETDEVICE, 0, 0)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
cu
Verfasst: 07.11.2004 20:44
von Borstensohn
Danke für die schnelle Antwort, Christi!
In meiner Demo-Version funktioniert es zwar nicht, aber die Vollversion ist schon bestellt.

Verfasst: 15.06.2007 18:35
von Thorsten1867
Man kann auch genauer festlegen, wann umgebrochen werden soll:
Code: Alles auswählen
Procedure.l Twip(mm.l)
ProcedureReturn mm / (25.4/1440)
EndProcedure
OpenWindow(0, 0, 0, 300, 300, #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, "Test")
CreateGadgetList(WindowID())
x = EditorGadget(0, 0, 0, 300, 300)
; Umbruch nach 80mm
SendMessage_(x, #EM_SETTARGETDEVICE, GetWindowDC_(x), Twip(80))
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Verfasst: 15.06.2007 18:45
von ts-soft
@Thorsten1867
Nutzt Du immer noch PB3.xx?
Verfasst: 16.06.2007 17:01
von Kai
Was mich viel mehr interessieren würde,
ob es auch beim StringGadget möglich ist,
hab vergeblich inner MSDN gesucht und nix gefunden.

Verfasst: 16.06.2007 17:15
von ts-soft
Mit StringGadget gehts auf jeden fall nicht. (Bitte richtig interpretieren)
Bei Edit-Control mit MultiLine style bin ich mir nicht sicher, aber es geht wohl
nicht.
Verfasst: 17.06.2007 00:44
von Dark Skillu
Verfasst: 17.06.2007 14:25
von Thorsten1867
ts-soft hat geschrieben:@Thorsten1867
Nutzt Du immer noch PB3.xx?
Sorry, habe den obigen Code kopiert und geändert. Hier in PB 4.10:
Code: Alles auswählen
Procedure.l Twip(mm.f)
ProcedureReturn Int(mm * (1440/25.4))
EndProcedure
OpenWindow(0, 0, 0, 300, 300, "Test", #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
CreateGadgetList(WindowID(0))
x = EditorGadget(0, 0, 0, 300, 300)
; Umbruch nach 80mm
SendMessage_(x, #EM_SETTARGETDEVICE, GetWindowDC_(x), Twip(80))
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Zeilenumbruch im Editor-Gadget
Verfasst: 04.04.2008 11:03
von Berti27
Hallo!
Dieses Problem interessiert mich auch sehr. Habe es mal wohl sehr umständlich gelöst mit Font int fester Breite (Schreibmaschinenschrift) und Abfrage der Zeilenlänge sowie Leerzeichen. Also eine nicht wirklich gute Lösung!
Die angegebenen Codes funktionieren bei mir nicht. Verwende PB 4.10 in Windows und Linux.Compiler kennt den "SendMessage"-Befehl nicht.
Mit freundlichen Grüßen
Berti27