Text mit Umbruch ins Stringgadget

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Text mit Umbruch ins Stringgadget

Beitrag von Hroudtwolf »

Ich hätt da gern maln Problem,

Weiß da draußen jemand wie man eine Textdatei MIT Zeilenumbruch in
ein MULTLINE-Stringgadget laden kann?
Und wie man eine dort markierte Textpasage auslesen kann?
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: AMD Ryzen 5 7600 6-Core Prozessor 3.80 GHz
16,0 GB Arbeitsspeicher
Windows 11 Pro Betriebssystem
Wohnort: Bremen

Beitrag von Pelagio »

Hallo Hroudtwolf,

ich hoffe dies hilft dir:

Code: Alles auswählen

Procedure ReadFileData (FileName.s)
   Protected Text.s

   If ReadFile(0,FileName)
      While Eof(0) = #FALSE
         Text = Text + Chr(#Asci_CR) + Chr(#Asci_LF) + ReadString()
      Wend   
      CloseFile(0)
      SetGadgetText(#StringGadget, Text) 
   EndIf
EndProcedure
edit redacid: code-Tags gesetzt.
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: AMD Ryzen 5 7600 6-Core Prozessor 3.80 GHz
16,0 GB Arbeitsspeicher
Windows 11 Pro Betriebssystem
Wohnort: Bremen

Beitrag von Pelagio »

Tschuldigung, habe eine Information vergessen:

#Asci_CR = 13
#Asci_LF = 10

[Text = Text + Chr(13) + Chr(10) + ReadString() ]
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Ich glaub das Problem liegt eher beim Zeilenumbruch und den markierten Text auszulesen..
Ich hab gestern nacht zwar mal im PSDK desswegen nachgeguckt, hab aber keine Lösung gefunden, nur das es warscheinlich mit dem Stringgadget nicht geht. Und zwar ist der Style #ES_AUTOHSCROLL für sowas zuständig, welcher aber anscheinend automatisch gesetzt wird und nach erstellen des Gadgets nicht mehr geändert werden kann.
"After the control has been created, these styles cannot be modified, except as noted."

Habs trotzdem mal ausprobiert, ging aber nicht:

Code: Alles auswählen

CreateGadgetList(OpenWindow(0,0,0,100,80,#PB_Window_ScreenCentered|#PB_Window_SystemMenu,""))
StringGadget(0,0,0,100,60,"",#PB_String_MultiLine)
StringGadget(1,0,60,100,20,"",#PB_String_ReadOnly)
SetWindowLong_(GadgetID(0),#GWL_STYLE,GetWindowLong_(GadgetID(0),#GWL_STYLE)!#ES_AUTOHSCROLL)
Repeat
  SendMessage_(GadgetID(0),#EM_GETSEL,@StartSel,@EndSel)
  SetGadgetText(1,Str(StartSel)+" bis "+Str(EndSel))
Until WaitWindowEvent() = #PB_Event_CloseWindow
Musst also warscheinlich dein Stringgadget selber erstellen.

Dafür siehste da wie du die Selektion rausbekommst, bin aber zu faul noch rauszufinden wie du dann den Text bekommst ;)
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Stringgadget

Beitrag von Hroudtwolf »

Vielen Dank für die Antworten.
Gemeinsam schaffen wir Wissen....................
Benutzeravatar
Hoto
Beiträge: 294
Registriert: 01.09.2004 22:51

Beitrag von Hoto »

Zeilenumbruch geht auch einfacher ohne API:

Code: Alles auswählen

StringGadget(1,0,0,400,200,"",#PB_String_MultiLine | #ESB_DISABLE_BOTH | #ES_AUTOVSCROLL | #WS_VSCROLL )
Frag mich wieso das alle so kompliziert machen. :lol:

Das 2. Flag sorgt für den Zeilenumbruch, das 3. dafür das er bei mehr Zeilen nach unten scrollt und das letzte damit ein Scrollbalken da ist, ansonsten kann man mit der Maus nicht scrollen.

Drauf gekommen bin ich über den Visual Designer, dort kann man diese 2 Flags setzen und als ich im April mit PB anfing hab ich das per Zufall rausgefunden.

Haben das alle bisher übersehn oder hat die Methode irgend einen gravierenden Nachteil den ich übersehn hab?!?
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

Beitrag von ts-soft »

@Hoto

Wenn mich nicht alles täuscht funktioniert Deine Version unter Win9x nicht. Kann ich aber im moment nicht Testen. Habs glaub ich mal so gemacht, und später mit Schrecken gesehen das unter Win9x alles rechtsbündig war
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
Hoto
Beiträge: 294
Registriert: 01.09.2004 22:51

Beitrag von Hoto »

Hm, ok, das kann ich selbst schlecht wissen, benutze seit Jahren schon kein Win98 mehr. Nachprüfen kann ichs daher auch nicht.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

ARGH! Schon wieder!

>

Code: Alles auswählen

StringGadget(1,0,0,400,200,"",#PB_String_MultiLine | #ESB_DISABLE_BOTH | #ES_AUTOVSCROLL | #WS_VSCROLL )
SO NICHT! NICHT ABGESEGNET UND FUNKTIONIERT SO NUR UNTER XP (ok, eventuell unter 2000, nicht aber unter der 9x-Serie)

Könnte mal bitte das alle löschen? Nur weil es funktioniert, darf man es nicht auch machen! (Sprich unter Longhorn oder wie das Ding heißt könnte es schon nicht mehr funktionieren!)

Code: Alles auswählen

Procedure EditorGadgetEnableTextWarp(Id); - Activate the automatic word-warp for a EditorGadget
  GID=GadgetID(Id)
  dc=GetWindowDC_(GID)
  SendMessage_(GID, #EM_SETTARGETDEVICE ,dc ,-1)
  ReleaseDC_(GID,dc)
EndProcedure
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
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

Beitrag von ts-soft »

Hab mich also nicht getäuscht
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
Antworten