RichEdit mit table

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

RichEdit mit table

Beitrag 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
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: RichEdit mit table

Beitrag 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

; *****************************************************************************
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: RichEdit mit table

Beitrag von marcelx »

Danke mk-soft
Ich werde es ausprobieren
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: RichEdit mit table

Beitrag 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
Win-10, PB 5.31 (Windows - x86)
Antworten