Seite 1 von 2
Frage zur EditorGadget
Verfasst: 20.09.2010 20:44
von marcelx
Hallo,
ich verwende EditorGadget für Texteingabe und möchte ein scrollen vertikal zulassen und ein horizontal verbieten.
Gibt es ein flag dafür (mit F1 habe ich kein gesehen)?
Ich möchte, dass bei Texteingabe ein Verhalten wie z.B. andere Text-Editor bei denen zulange Text in eine neue Zeile geschrieben wird a la Word oder OpenOffice.
Danke für ein Hinweis.
Gruß
Marcelx
Re: Frage zur EditorGadget
Verfasst: 20.09.2010 21:01
von Rebon
Es gibt eine Möglichkeit über API für Zeilenumbruch.
Code: Alles auswählen
SendMessage_(GadgetID(0), #EM_SETTARGETDEVICE, #Null, #True) ;#True oder 1 für an, #False oder 0 für aus
Re: Frage zur EditorGadget
Verfasst: 20.09.2010 21:04
von marcelx
Wunderbar, das kann ich gleich ausprobieren.
Frage:
ist es Windows-spezial ?
über SendMessage_ habe ich im Forum schon gelesen, wo gibt es Doku dazu ?
Danke
Re: Frage zur EditorGadget
Verfasst: 20.09.2010 21:09
von ts-soft
marcelx hat geschrieben:Wunderbar, das kann ich gleich ausprobieren.
Frage:
ist es Windows-spezial ?
Ja, es handelt sich um Windows-API, das heißt unter Linux oder MacOS wird es so nicht funktionieren!
marcelx hat geschrieben:
über SendMessage_ habe ich im Forum schon gelesen, wo gibt es Doku dazu ?
Danke
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
oder
http://www.realsource.de/index.php/down ... indows-sdk
wobei dann noch das aktuelle SDK von Microsoft zu installieren ist.
(aktuell:
http://www.microsoft.com/downloads/en/d ... laylang=en )
Gruß
Thomas
Re: Frage zur EditorGadget
Verfasst: 20.09.2010 21:14
von marcelx
Super, so funktioniert.
Danke für die schnelle Antwort
Gruß
Marcelx
Re: Frage zur EditorGadget
Verfasst: 21.09.2010 01:39
von Vera
Hallo,
weil es gut in diesen Thread passt: zu Wordwrap gibt es eine Crossplattform-version von
Guimauve und eine Mac-version von
Shardik.
Hier erstere mit kleiner Ergänzung für's Menü mit Statusanzeige:
Code: Alles auswählen
Enumeration
#Menu : #wrap : #edit
EndEnumeration
Global wstate = 1
text.s = Chr(34) +"Hello everyone, This is a small Procedure To Activate Or Deactivate the EditorGadget() wordwrap behaviour. The code work on Windows And Linux. Have Fun ! " +Chr(34) + " - Guimauve"
; <<<<<<<<<<Guimauve<<<<<<<<
Procedure EditWWrap(EditorID.l, State.l)
TextBuffer.s = GetGadgetText(EditorID)
If State = 1
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
SendMessage_(GadgetID(EditorID), #EM_SETTARGETDEVICE, #Null, 0)
CompilerCase #PB_OS_Linux
gtk_text_view_set_wrap_mode_(GadgetID(EditorID), #GTK_WRAP_WORD)
CompilerEndSelect
wstate = 0
SetMenuItemState(#Menu,#wrap,1)
ElseIf State = 0
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
SendMessage_(GadgetID(EditorID), #EM_SETTARGETDEVICE, #Null, $FFFFFF)
CompilerCase #PB_OS_Linux
gtk_text_view_set_wrap_mode_(GadgetID(EditorID), #GTK_WRAP_NONE)
CompilerEndSelect
wstate = 1
SetMenuItemState(#Menu,#wrap,0)
EndIf
SetGadgetText(EditorID, TextBuffer)
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<
If OpenWindow(0, 110, 110, 300, 200, "EditWWrap", #PB_Window_SystemMenu )
EditorGadget(#edit, 10, 25, 230, 130)
AddGadgetItem(#edit, -1, text)
CreateMenu(#Menu, WindowID(0))
MenuTitle("Menu")
MenuItem(#wrap," Wrap" +#TAB$ +"F4")
AddKeyboardShortcut(0,#PB_Shortcut_F4,#wrap)
Repeat
wwe = WaitWindowEvent()
Select wwe
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Menu
Select EventMenu()
Case #wrap : EditWWrap(#edit, wstate)
EndSelect
EndSelect
Until wwe = #PB_Event_CloseWindow
EndIf
Grüße ~ Vera
Re: Frage zur EditorGadget
Verfasst: 21.09.2010 13:02
von marcelx
Hallo Vera,
das ist super - das wäre meine nächste Frage gewesen (wie ist es mit Linux?)
Dazu (EditorGadget) habe ich noch zwei Fragen:
- wie schalte ich das vertikal Scrollen aus?
- wie kann ich die Anzahl der Zeilen begrenzen
(Anzahl der eingegeben Zeilen können kleiner/grösser als was in den Fenster passt)?
Danke und Gruß
MarcelX
Re: Frage zur EditorGadget
Verfasst: 21.09.2010 18:09
von Vera
Hallo marcelx,
freut mich
Um die Scrollbalken zu de/aktivieren, gibt's auch zwei Win-API Befehle:
SendMessage_(GadgetID(1), #EM_SHOWSCROLLBAR,#SB_HORZ,0) ; 1, bzw. #False / #True
SendMessage_(GadgetID(1), #EM_SHOWSCROLLBAR,#SB_VERT,0)
Die Lösungen für Linux kenne ich leider auch noch nicht. (da muß man mal suchen u. fragen)
siehe:
EditorGadget border and scrollbars, darin geht's auch um Zeilenlänge u. Zeilenanzahl.
Hier noch ein weiterer Leckerbissen von
Rashad:
AutoResize EditorGadget [Windows]
Die Anzahl der Zeilen läßt sich bestimmt begrenzen, bzw. abfangen. Wenn sie aber die Fenstergröße überschreiten, läßt sich der Text auch bei deaktivierter Scrollbar via Mausrad oder Tastatur scrollen.
(Mir ist nicht ganz klar, worauf Du abzielst.)
Gruß ~ Vera
Re: Frage zur EditorGadget
Verfasst: 22.09.2010 13:16
von marcelx
Hallo Vera,
erst mal, danke für alle Typs.
Was deine Neugier angeht, komme ich gern nach und versuche den Sinn zur erläutern:
Da kommt ein lange Satz:
Will ich, dass auf eine Seite mehre Eingaben (Radio-Button, .. Text ...) den platz so anlegen, das alles drauf passt,
spare ich an der Höhe von Text-Eingabe-Fenster.
Beim Drucken habe ich z.B. bis max 10 Zeilen vorgesehen für ein bestimmte Texteingabe.
Das bedeutet, dass maximal bis zur 10 Zeilen als Text eingegeben werden darf.
Da im Durchschnitt 5 Zeilen verwendet werden, mache ich die Höhe für 5 Zeilen und, weil es scrollbar ist, begrenze ich die Eingabe auf 10 Zeilen.
Es gibt auch Textfelder für die 2 Zeilen vorgesehen sind. Dann reicht ein EditorGadget für 2 Zeilen und ohne scrollbar EditorGadget.
Ich hoffe, dass es einigermaßen verständlich war.
Gruß,
MarcelX
Re: Frage zur EditorGadget
Verfasst: 22.09.2010 20:09
von Vera
Hi marcelx,
dito - danke
Hört sich für mich nach einem ausdruckbarem zB DinA4 Formular an, (so kann ich das zumindest nachvollziehen).
Ich hoffe es klappt, wie Du es Dir vorstellst.
Gruß ~ Vera