Seite 1 von 1

RichEdit mit table

Verfasst: 24.04.2018 10:07
von marcelx
Hallo,

ich habe RichEdit entdeckt und finde den Beispiel RichEdit_Example.pb klasse.
Ich wollte es erweitern mit den Funktion Table einfügen.

Leider komme ich nicht weiter.
1) Beim Einfügen eine Table kommt die Daten als Text ("{\par \ ...")
2) die Button OK/Abbrechen funktionieren nicht.

Ich habe in icons Table.ico hinzugefügt
Alle Änderungen in RichEdit.pbi und RichEdit_Example.pb mit den Kommentar ADD markiert.

Die source habe ich als zip im T-Com CLOUD abgelegt.

https://www.magentacloud.de/lnk/lBATrQBs
Passwort: MmF834

Wer kann mich dabei helfen?
Danke und Gruß MarcelX

Re: RichEdit mit table

Verfasst: 24.04.2018 10:51
von mk-soft
Das problem ist Unicode, habe aber nicht weiter in Dein Code geschaut...

Das Control "Editorgadget (RichEdit)" verwendet jetzt auch Unicode.

Möchte man aber RTF Steuersequenzen verwenden, müssen diese als UTF8 zum Gadget übermittelt werden.
Das Control erkennt dieses und Interpretiert die Steuersequenzen.

SetGadgetText verwendet aber immer Unicode (PB v5.6x)

Siehe Beitrag http://www.purebasic.fr/english/viewtop ... 30#p519943

Hilfscode v1.05

Code: Alles auswählen

;-TOP

; *****************************************************************************
; AddTextRTF by mk-soft, v1.05, 27.03.2018

CompilerIf #PB_Compiler_Version < 550
  Procedure UTF8(Text.s)
    Protected *mem = AllocateMemory(StringByteLength(Text, #PB_UTF8) + 1)
    If *mem
      PokeS(*mem, Text, -1, #PB_UTF8)
    EndIf
    ProcedureReturn *mem
  EndProcedure
CompilerEndIf

Procedure AddTextRTF(Gadget, Text.s , NewLine=#False)
  If Left(Text, 5) <> "{\rtf"
    Text = "{\rtf " + Text + "}"
  EndIf
  If NewLine
    Text = Left(Text, Len(text) - 1) + "\line}"
  EndIf
  CompilerIf #PB_Compiler_Unicode
    Protected hEdit = GadgetID(Gadget)
    Protected ndx = GetWindowTextLength_(hEdit)
    Protected *szBuffer = UTF8(Text)
    SendMessage_(hEdit, #EM_SETSEL, ndx, ndx)
    SendMessage_(hEdit, #EM_REPLACESEL, 0, *szBuffer)
    FreeMemory(*szBuffer)
  CompilerElse
    AddGadgetItem(Gadget, -1 , Text)
  CompilerEndIf
EndProcedure

; *****************************************************************************

Re: RichEdit mit table

Verfasst: 24.04.2018 12:27
von marcelx
Danke mk-soft
Ich werde es ausprobieren

Re: RichEdit mit table

Verfasst: 25.04.2018 08:45
von marcelx
mit den Implementierung von table gebe ich auf .
Das einfügen ist eine Sache, dazu kämme die Möglichkeit den eingefügte table zu ändern, was schwieriger wäre.
Es hat trotzdem Spaß gemacht und ich habe was neues gelernt (Module, Interface).
Gruß
MarcelX