Frage zur EditorGadget

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Frage zur EditorGadget

Beitrag 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
Win-10, PB 5.31 (Windows - x86)
Rebon
Beiträge: 263
Registriert: 20.05.2009 19:13

Re: Frage zur EditorGadget

Beitrag 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 
PB 4.00 | Windows XP Home SP3
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Frage zur EditorGadget

Beitrag 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
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Frage zur EditorGadget

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Frage zur EditorGadget

Beitrag von marcelx »

Super, so funktioniert.
Danke für die schnelle Antwort

Gruß
Marcelx
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: Frage zur EditorGadget

Beitrag 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
Zuletzt geändert von Vera am 21.09.2010 18:11, insgesamt 1-mal geändert.
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Frage zur EditorGadget

Beitrag 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
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: Frage zur EditorGadget

Beitrag 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
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Frage zur EditorGadget

Beitrag 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
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: Frage zur EditorGadget

Beitrag 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
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Antworten