Text mit Umbruch ins Stringgadget
- Hroudtwolf
- Beiträge: 1416
- Registriert: 30.10.2004 23:33
- Kontaktdaten:
Text mit Umbruch ins Stringgadget
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?
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?
- 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
Hallo Hroudtwolf,
ich hoffe dies hilft dir:
edit redacid: code-Tags gesetzt.
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
EndProcedureIch 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:
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
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_CloseWindowDafür siehste da wie du die Selektion rausbekommst, bin aber zu faul noch rauszufinden wie du dann den Text bekommst

[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
- Hroudtwolf
- Beiträge: 1416
- Registriert: 30.10.2004 23:33
- Kontaktdaten:
Stringgadget
Vielen Dank für die Antworten.
Gemeinsam schaffen wir Wissen....................
Gemeinsam schaffen wir Wissen....................
Zeilenumbruch geht auch einfacher ohne API:
Frag mich wieso das alle so kompliziert machen. 
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?!?
Code: Alles auswählen
StringGadget(1,0,0,400,200,"",#PB_String_MultiLine | #ESB_DISABLE_BOTH | #ES_AUTOVSCROLL | #WS_VSCROLL )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?!?
- 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
@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
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

ARGH! Schon wieder!
>
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
StringGadget(1,0,0,400,200,"",#PB_String_MultiLine | #ESB_DISABLE_BOTH | #ES_AUTOVSCROLL | #WS_VSCROLL )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)
EndProcedureCodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
- 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
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
