Autor Téma: "Dokonalejší" rxrichedit  (Přečteno 2777 krát)

Majkl1

  • Host
"Dokonalejší" rxrichedit
« kdy: 26-07-2008, 20:46:59 »
Ahoj,
Nemáte někdo typ na něco vymáklejšího než je rxrichedit? Potřeboval bych v textu používat více druhů podtržení apod.?

JanFiala

  • Host
"Dokonalejší" rxrichedit
« Odpověď #1 kdy: 27-07-2008, 00:40:00 »
RichView

Majkl1

  • Host
"Dokonalejší" rxrichedit
« Odpověď #2 kdy: 27-07-2008, 02:26:00 »
No nevím, jestli to je to pravé ořechové, vzhledem k tomu, že potřebuju s textem pracovat (upravovat), tak jen podle názvu richview, to asi nepůjde. Jinak v jakej knihovně ho mám hledat? ???

JanFiala

  • Host
"Dokonalejší" rxrichedit
« Odpověď #3 kdy: 27-07-2008, 08:29:00 »
Kdyby ses na to aspon podival. RichView je asi nejdokonalejsi imlementace RTF, ktera existuje (samozrejme vcetne editace).
A kde to hledat? Myslel jsem, ze kdyz mas internet, ta uz jsi slysel napr. o Google...

Majkl1

  • Host
"Dokonalejší" rxrichedit
« Odpověď #4 kdy: 27-07-2008, 09:41:00 »
Jo už to mám v compu, jdu se na to kouknout, dík za nápad. 8)

Majkl1

  • Host
"Dokonalejší" rxrichedit
« Odpověď #5 kdy: 27-07-2008, 10:47:00 »
Tak je to v řitce. V delphách to mám, ale je to nějaký mrtvý, nemá to v properties žádnou položku typu lines, text apod, kde by se dalo něco editovat. Když vložím richviewedit na famr a spustím aplikaci, tak se nedá nic upravovat, je tam jen adresa na trichview.com a tím to hasne. Readonly je false, enabled true, tak nevím, kde je problém. je to 30tidení zkušební verze, ale mě to nechodí. Co s tím? ???

Majkl1

  • Host
"Dokonalejší" rxrichedit
« Odpověď #6 kdy: 27-07-2008, 13:05:00 »
No tak už jsem to rozchodil, ale to není komponenta, kterou bych si představoval. Je fakt asi dobrá na tvorbu texťáků, ale mě plně vyhovuje rxrichedit, jen mi tam chybí možnost dvojitého podrtžení a podtržení vlnovkou. Ve zdorjáku u rxricheditu jsem našel něco jako, že underlinedouble tam je, ale jen u verze 2. Nic mi to neříká. Je tam toto:

  TRxCustomRichEdit = class;

{ TRxTextAttributes }

  TRxAttributeType = (atDefaultText, atSelected, atWord);
  TRxConsistentAttribute = (caBold, caColor, caFace, caItalic, caSize,
    caStrikeOut, caUnderline, caProtected, caOffset, caHidden, caLink,
    caBackColor, caDisabled, caWeight, caSubscript, caRevAuthor,
    caLanguage, caIndexKind, caSpacing, caKerning, caULType, caAnimation,
    caSmallCaps, caAllCaps, caOutline, caShadow, caEmboss, caImprint, caURL);
  TRxConsistentAttributes = set of TRxConsistentAttribute;
  TSubscriptStyle = (ssNone, ssSubscript, ssSuperscript);
  TUnderlineType = (utNone, utSolid, utWord, utDouble, utDotted, utWave);
  TAnimationType = (aniNone, aniLasVegas, aniBlink, aniSparkle, aniBlackAnts,
                    aniRedAnts, aniShimmer);
A dále toto:

{ New masks and effects -- a parenthesized asterisk indicates that
   the data is stored by RichEdit2.0, but not displayed }

  CFM_SMALLCAPS               = $0040;                  { (*)    }
  CFM_ALLCAPS                 = $0080;                  { (*)    }
  CFM_HIDDEN                  = $0100;                  { (*)    }
  CFM_OUTLINE                 = $0200;                  { (*)    }
  CFM_SHADOW                  = $0400;                  { (*)    }
  CFM_EMBOSS                  = $0800;                  { (*)    }
  CFM_IMPRINT                 = $1000;                  { (*)    }
  CFM_DISABLED                = $2000;
  CFM_REVISED                 = $4000;

  CFM_BACKCOLOR               = $04000000;
  CFM_LCID                    = $02000000;
 CFM_UNDERLINETYPE           = $00800000;              { (*)    }
Tak nevím, co to znamená, ale v properties v font.style mám pouze klasický underline ???

JaroB

  • Host
"Dokonalejší" rxrichedit
« Odpověď #7 kdy: 28-07-2008, 10:37:00 »
Pokud mluvíte o stejném RICHview, tak ten není zadarmo (== € 189) a vyplatí se asi jen do komerčního projektu (poslední free verze je snad šest let stará).

Zkuste RichEdit odsud http://www.micrel.cz/RxLib/dfiles.htm obsahuje navíc atributy písma a nějaké další, nepodstatné vylepšení v preview.

Pak ještě existuje nějaký derivát z RxRichEditu, který byl speciálně určen pro zobrazování vlnovek pro jazykové korektory, ale já ho nemám... :(

Jaro B.

Majkl1

  • Host
"Dokonalejší" rxrichedit
« Odpověď #8 kdy: 28-07-2008, 11:36:00 »
Díky tuto RXlibrary 2,75 mám. Vyčetl jsem něco jako, že tahle verze sice v rtf formátu i ty ostatní typy underline "vidí", ale nezobrazuje je. :(

JaroB

  • Host
"Dokonalejší" rxrichedit
« Odpověď #9 kdy: 28-07-2008, 18:18:00 »
Tady je jednoduchý příkládek, jak se to dá použít na vybraný (selected) text v richeditu
Kód: [Vybrat]
procedure TForm1.SpeedButton3Click(Sender: TObject);
const // Underline styles
  CFU_UNDERLINETHICK = 9;
  CFU_UNDERLINEWAVE = 8;
  CFU_UNDERLINEDASHDOTDOT = 7;
  CFU_UNDERLINEDASHDOT = 6;
  CFU_UNDERLINEDASH = 5;
  CFU_UNDERLINEDOTTED = 4;
  CFU_UNDERLINE = 1;
  CFU_UNDERLINENONE = 0;
var
  Format: CHARFORMAT2;
  AUnderlineType: Byte;
  AColor: Word;
begin
  //priklad podtrzeni
  AUnderlineType := CFU_UNDERLINEWAVE;
  //priklad barvy
  AColor := $50;
  //zeromemory
  FillChar(Format, SizeOf(Format), 0);
  with Format do
  begin
    cbSize := SizeOf(Format);
    dwMask := CFM_UNDERLINETYPE;
    bUnderlineType := AUnderlineType or AColor;
    //yOffset := -60;
    RxRichEdit1.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));
  end;
end;


Jaro B.

JaroB

  • Host
"Dokonalejší" rxrichedit
« Odpověď #10 kdy: 28-07-2008, 19:35:59 »
A je zajímavé jak to lehce jde i s RXRichEditem asi takhle viz (konstanty z předchozího příspěvku)
Kód: [Vybrat]
AUnderlineType := CFU_UNDERLINEWAVE;
  AColor := $50;

  RxRichedit1.SelAttributes.UnderlineType := TUnderlineType(AUnderlineType or AColor);


Jaro B.

JaroB

  • Host
"Dokonalejší" rxrichedit
« Odpověď #11 kdy: 28-07-2008, 22:21:00 »
Jo a tady je ještě tabulka vga barev

Kód: [Vybrat]
const
  cBlack = $00;
  cBlue = $10;
  cAqua = $20;
  cLime = $30;
  cFuchsia = $40;
  cRed = $50;
  cYellow = $60;
  cWhite = $70;
  cNavy = $80;
  cTeal = $90;
  cGreen = $A0;
  cPurple = $B0;
  cMaroon = $C0;
  cOlive = $D0;
  cGray = $E0;
  cSilver = $F0;

//nebo jiny pohled na data

type
  TBasicColors = (bcBlack, bcBlue, bcAqua, bcLime, bcFuchsia, bcRed, bcYellow,
    bcWhite, bcNavy, bcTeal, bcGreen, bcPurple, bcMaroon, bcOlive, bcGray, bcSilver);

  function GetColorPos(iColor: TBasicColors): Byte;
  begin
    Result := Ord(iColor) shl 4;
  end;

...pouziti viz

  AUnderlineType := CFU_UNDERLINEWAVE;
  AColor :=  GetColorPos(bcFuchsia);

  RxRichedit1.SelAttributes.UnderlineType := TUnderlineType(AUnderlineType or AColor);


Jaro B.

rene.mihula

  • Host
"Dokonalejší" rxrichedit
« Odpověď #12 kdy: 29-07-2008, 13:35:00 »
IMHO vcelku povedený následovních RxRichEditu je JvRichEdit z JVCL. Dá se vykuchat z balíku i jen samotný JvRichEdit (není to více než deset unit, pokud potřebuje člověk i DB variantu - pokud ne, bude jich ještě méně) a není pak potřeba instalovat celé JVCL.

JvRichEdit si hezky očuchá, který RichEdit v systému je k dispozici (jiný je na W98, jiný na w2k, jiný na XP + některé SP upgrade-ují richedit také) a ten nejvyšší, který je možné vytvořit, vytvoří. Dá se například použít i k takovým věcem jako je automatická konverze HTML do RTF (což umí RichEdit od XP nebo možná už od 2k SP3) a jiné srandy.

Majkl1

  • Host
"Dokonalejší" rxrichedit
« Odpověď #13 kdy: 29-07-2008, 14:11:59 »
Neberemi to "charformat2", zřejmě nemám něco nainstalovaný nebgo v sekci uses. Takže co vy na to?
var
  Format: CHARFORMAT2;
  AUnderlineType: Byte;
  AColor: Word;

JaroB

  • Host
"Dokonalejší" rxrichedit
« Odpověď #14 kdy: 29-07-2008, 14:43:59 »
A máš v uses RichEdit?  

Jaro B.

Majkl1

  • Host
"Dokonalejší" rxrichedit
« Odpověď #15 kdy: 29-07-2008, 15:12:00 »
YES! Teď jsem zkoušel jvrichedit a žádná změna. :(

JaroB

  • Host
"Dokonalejší" rxrichedit
« Odpověď #16 kdy: 29-07-2008, 16:44:00 »
CharFormat2 je deklarovaný v RichEdit viz
Kód: [Vybrat]
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, ExtCtrls, StdCtrls, RichEdit, RxRichEd, Menus, btRxRichPopup;

v RxRichEd je deklarovaný TCharFormat2 jako synonymum

Jaro B.