T O P I C R E V I E W |
AndNit |
Posted - Jul 18 2024 : 19:40:17 Hey...
I have a text layer that I automatically fill with words that I take from HTML. However, when starting the text with Bold Italic, for example, and then inserting new text with another formatting, the previous formatting is replaced by the new formatting.
I need each word to be written on the text layer, with the formatting indicated when filling it out and that the formatting, already applied to the previous words, remains unchanged.
I'm doing it this way:
var
Texto, TextoApoio, Inicio, Fim, InicioTxt, FimTxt: string;
De, Ate, DeTxt, AteTxt, a, b, Letras: integer;
begin
mTag.Clear;
Texto := SL[0];
Inicio := '<';
Fim := '>';
while Pos(Inicio, Texto) > 0 do begin
De := Pos( Inicio, Texto );
Ate := Pos( Fim, Texto ) - 1;
if Ate < 0 then
Ate := Length( Texto );
mTag.Lines.Add( Copy(Texto, De, (Ate+1)) );
TextoApoio := TextoApoio + Copy(Texto, De, (Ate+1));
Delete( Texto, De, 1 );
Delete( Texto, De, Ate );
AteTxt := Pos( Inicio, Texto );
if Copy(Texto, (1), 1) <> '<' then begin
TIETextLayer( image.CurrentLayer ).ActivateEditor;
TIETextLayer( image.CurrentLayer ).EnableFormatting := True;
Letras := TIETextLayer(image.CurrentLayer).RichText.Length;
TIETextLayer( image.CurrentLayer ).RichText.Insert( letras ,Copy(Texto, 1, AteTxt-1 ));
TIETextLayer( image.CurrentLayer ).Font.Name := 'Courier New';
a := (pos('strong', TextoApoio));
b := (pos('underline', TextoApoio));
if (a > 0) and (b > 0) then
TIETextLayer( image.CurrentLayer ).Font.Style := [fsBold, fsUnderline]
else
if (a > 0) then
TIETextLayer( image.CurrentLayer ).Font.Style := [fsBold]
else
if (b > 0) then
TIETextLayer( image.CurrentLayer ).Font.Style := [fsUnderline]
else
TIETextLayer( image.CurrentLayer ).Font.Style := [];
TIETextLayer( image.CurrentLayer ).Font.Size := 18;
//image.MouseInteractLayers := [mlCreateTextLayers, mlMoveLayers, mlResizeLayers, mlRotateLayers ];
//image.LayerOptions := image.LayerOptions + [ loPreventOutOfBounds ];
image.Update();
mTexto.Lines.Add( Copy(Texto, 1, AteTxt-1 ) );
Delete( Texto, 1, 1 );
Delete( Texto, 1, AteTxt-2 );
TextoApoio := '';
end;
end;
end;
Thanks |
9 L A T E S T R E P L I E S (Newest First) |
xequte |
Posted - Jul 27 2024 : 23:07:36 Hi
Do you mean a manual for the RTF standard?
Please see: https://latex2rtf.sourceforge.net/rtfspec.html
Nigel Xequte Software www.imageen.com
|
AndNit |
Posted - Jul 27 2024 : 16:40:45 Thanks Nigel,
Is there a manual I can use to build this "URL" that explains the general settings? I'm pretty lost in the configuration parameters, although your example has cleared up some of my doubts.
Thanks |
xequte |
Posted - Jul 26 2024 : 21:49:24 Hi
If you run the demo:
\Demos\Other\RichEdit\RichEdit.dpr
You will see the RTF for your text is:
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang5129\deflangfe5129{\fonttbl{\f0\fswiss\fprq2\fcharset0 Aptos;}}
{\*\generator Riched20 10.0.22621}{\*\mmathPr\mnaryLim0\mdispDef1\mwrapIndent1440 }\viewkind4\uc1
\pard\widctlpar\sa160\sl276\slmult1\kerning2\ul\b\f0\fs24 PROPERTY:\ulnone\b0 \b Residential building (under construction)\b0 located in \b Praia da Guanabara, n\'ba 1371\b0 , former n\'ba 433, belonging to the parish of Nossa Senhora d'Ajuda, useful domain of the land, \b outside the Federal Union.\b0\par
}
Which you can use to insert a formatted text layer as follows:
ImageEnView1.LayersAdd( ielkText );
TIETextLayer( ImageEnView1.CurrentLayer ).EnableFormatting := True;
TIETextLayer( ImageEnView1.CurrentLayer ).RichText :=
'{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang5129\deflangfe5129{\fonttbl{\f0\fswiss\fprq2\fcharset0 Aptos;}}' +
'{\*\generator Riched20 10.0.22621}{\*\mmathPr\mnaryLim0\mdispDef1\mwrapIndent1440 }\viewkind4\uc1' +
'\pard\widctlpar\sa160\sl276\slmult1\kerning2\ul\b\f0\fs24 PROPERTY:\ulnone\b0 \b Residential building (under construction)\b0 located in \b Praia da Guanabara, n\''ba 1371\b0 , former n\''ba 433, belonging to the parish of Nossa Senhora d''Ajuda, useful domain of the land, \b outside the Federal Union.\b0\par}';
TIETextLayer( ImageEnView1.CurrentLayer ).SizeToText();
ImageEnView1.Update();
Nigel Xequte Software www.imageen.com
|
AndNit |
Posted - Jul 25 2024 : 14:00:21 Sorry, you've helped me a lot here, but I'm not able to move forward with the solution.
How would I write this text, using the code below, with these formatting in a text layer:
Text:
PROPERTY: Residential building (under construction) located in Praia da Guanabara, nš 1371, former nš 433, belonging to the parish of Nossa Senhora d'Ajuda, useful domain of the land, outside the Federal Union.
Code: (I can't understand the configuration parameters of the "URL" sent in TIETextLayer( ImageEnView1.CurrentLayer ).RichText)
TIETextLayer( ImageEnView1.CurrentLayer ).EnableFormatting := True;
TIETextLayer( ImageEnView1.CurrentLayer ).RichText :=
#123'\rtf1\ansi\ansicpg1252\deff0'#123'\fonttbl'#123'\f0\fnil\fcharset0
Tahoma;'#125#125'\viewkind4\uc1\ pard\lang1033\b\f0\fs24 ImageEn!\b0\par'#125;
ImageEnView1.Update();
Thank you very much for your attention, I've been stuck with this problem for almost a month |
xequte |
Posted - Jul 25 2024 : 01:56:25 Hi
If you use TIERichEdit (which is just an enhanced TRichEdit) then you can assign its Rich text:
http://www.imageen.com/help/TIERichEdit.RTFText.html
To the RichText property of the layer:
http://www.imageen.com/help/TIETextLayer.RichText.html
You can add formatting to a selection in TTIERichEdit using:
http://www.imageen.com/help/TIERichEdit.SelAttributes.html
Or, as mentioned, add formatted text using:
http://www.imageen.com/help/TIERichEdit.AddFormattedText.html
Nigel Xequte Software www.imageen.com
|
AndNit |
Posted - Jul 24 2024 : 08:28:36 and how can I assign the formatted text of a TRichEdit, within a text layer or a RichEdit bed, on the image?
Can I, after writing the text, select the characters I need and configure them the way I want them? I need the text to be written on the image, in a specific place on it.
Another solution would be to mirror TRichEdit in the position I need in the image, how can I do that? |
xequte |
Posted - Jul 24 2024 : 05:13:20 Hi
There is no built-in functionality for that. You can only programmatically format text in as much as it is supported by TRichEdit or TIERichEdit.
Nigel Xequte Software www.imageen.com
|
AndNit |
Posted - Jul 23 2024 : 17:14:39 Hello,
I'm still having trouble finding a solution.
I couldn't do it based on the instructions you brought me.
I need to insert text, automatically in a text layer, word by word and when I'm writing (automatically, without user interaction), I need to say that that first word is BOLD, UNDERLINED, that the next word is just BOLD and or that has no configuration. I can do almost this, it turns out that when he configures the last word, he applies the changes to the entire layer, I need each word to continue with the configuration that was written |
xequte |
Posted - Jul 20 2024 : 16:27:40 Yes, that is correct. The Font property has no effect if rich formatting is used:
http://www.imageen.com/help/TIETextLayer.Font.html
To add formatted text you would need to update the RichText Property:
http://www.imageen.com/help/TIETextLayer.RichText.html
Which would require you to build a rich text string, e.g. using TIERichEdit:
http://www.imageen.com/help/TIERichEdit.AddFormattedText.html
Nigel Xequte Software www.imageen.com
|
|
|