Word Wrap nach X Zeichen

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Word Wrap nach X Zeichen

Beitrag von CSHW89 »

Hey Leute,
ich möchte gerne mein EditorGadget so haben, das es nach genau X zeichen in der nächsten zeile schreibt. also so ne art word wrap. allerdings sollen leerzeichen ect. keine rolle spielen. also so was z.b.:

Code: Alles auswählen

So möcht
e ich da
s haben
hab mir schon 'EM_SETWORDBREAKPROC' angeschat. aber ka wie das funzt. vielleicht bin ich auch nur zu blöd dazu. hat jemand ne idee oder direkt ein beispiel.
danke schon mal
lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: Word Wrap nach X Zeichen

Beitrag von CSHW89 »

na gut, um es vielleicht ein wenig einfacher zu machen:

der font ist 'courier'. d.h. die breite des textes ist in jeder zeile immer gleich. und mein editorgadget könnte ich auch so verkleinern, dass nur noch die gewünschte anzahl an zeichen in eine zeile passt. aber wie gesagt. er wrapt auch bei einem leerzeichen. kann man das nicht i-wie ausschalten.

lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
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: Word Wrap nach X Zeichen

Beitrag von ts-soft »

Eine solche API-Funkton gibt es nicht, dafür mußte Dir schon was selber basteln.
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
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: Word Wrap nach X Zeichen

Beitrag von CSHW89 »

oh nööööööööööö >_< . ich hab geahnt das so was passiert.

na gut, dann ne andere frage, wie könnte ich am besten einzelne characters entfernen bzw. hinzufügen ohne 'EM_REPLACESEL' zu benutzen.

lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
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: Word Wrap nach X Zeichen

Beitrag von ts-soft »

Im Callback #WM_CHAR abfangen, Zeichen zählen und wenn die Zeile voll ist, ein #CRLF$ einfügen, damit es umbricht.
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
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: Word Wrap nach X Zeichen

Beitrag von CSHW89 »

das funktioniert ist kein thema, mir macht das 'einfügen' probleme. da ja die zeilenumbrüche dann an einer anderen stelle sein können. dann muss ich alle umbrüche entfernen und an anderer stelle einfügen. das möchte ich möglichst schnell erledigen. also ohne text zu selektieren.
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
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: Word Wrap nach X Zeichen

Beitrag von ts-soft »

Als Anfang, aber hoch und runter bewegungen mußte noch einbauen :mrgreen:

Code: Alles auswählen

Procedure EditCB(hwnd, msg, wparam, lparam)
  Protected result, oldcb, item, text.s
  Static count
  oldcb = GetProp_(hwnd, "oldcb")
  result = CallWindowProc_(oldcb, hwnd, msg, wparam, lparam)
  Select msg
    Case #WM_CHAR
      
      Select wparam
        Case #VK_RETURN
          item = CountGadgetItems(0) - 2
          text = GetGadgetItemText(0, item)
          text = RemoveString(text, #LF$)
          RemoveGadgetItem(0, item)
          AddGadgetItem(0, -1, text)
         Default
          count + 1
          If count = 10
            count = 0
            AddGadgetItem(0, -1, "")
          EndIf
      EndSelect

  EndSelect
  ProcedureReturn result
EndProcedure


OpenWindow(0, #PB_Ignore, #PB_Ignore, 640, 480, "", #PB_Window_SystemMenu)
EditorGadget(0, 5, 5, 630, 470)
SetProp_(GadgetID(0), "oldcb", SetWindowLongPtr_(GadgetID(0), #GWL_WNDPROC, @EditCB()))

While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
RemoveProp_(GadgetID(0), "oldcb")
CloseWindow(0)
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
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: Word Wrap nach X Zeichen

Beitrag von CSHW89 »

das funktioniert doch so weit bei mir.
nur das EINFÜGEN nicht. das krieg ich denk ich schon i-wie hin. ich möchte nur wissen, ob es nicht eine einfache möglichkeit gibt, ein bestimmtes zeichen (ich weiß auch wo es ist) zu löschen und ein zeichen an einer bestimmten stelle einzufügen ohne ein text zu selektieren (bruacht nämlich zeit und produziert zu viele events)
lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: Word Wrap nach X Zeichen

Beitrag von TomS »

Code: Alles auswählen

text.s = "abcdefghi"
;text.s = GetGadgeText() 
pos.i = 5

text = Left(text,pos-1) + Right(text,Len(text)-pos) ;Zeichen an Position löschen
Debug text
;SetGadgetText()

text = Left(text,pos-1) +"X"+ Right(text,Len(text)-pos+1) ;Zeichen an Position einfügen
Debug text
;SetGadgetText()
Oder was meinst du mit "wo es ist"?
Die Position oder zwischen < und >?
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: Word Wrap nach X Zeichen

Beitrag von CSHW89 »

wie ich ein zeichen in einem string einfügen kann, sollte ich schon können. :freak:

ich hab ein EditorGadget, sagen wir mal mit 10000 zeilen. nun möchte ich schnell alle zeilenumbrüche löschen und sie an einer anderen position setzen. und das SCHNELL, ich dachte, es gibt eine api-message, mit der ich ein zeichen an einer bestimmten stelle löschen bzw. einfügen kann.
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Antworten