Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];

Вниз

Как выделить цветом какое-либо свово в RichEdit е?   Найти похожие ветки 

 
=Sniper=   (2004-08-11 22:40) [0]

Не надо меня посылать изучать пример где рисуется 10 строк закрашенных!
Так как мне нужно закрасить это слово где бы оно ни находилось (в RichEdit"e)!


 
=Sniper=   (2004-08-12 21:33) [1]

Удалено модератором
Примечание: Создание пустых сообщений


 
=Sniper=   (2004-08-13 14:49) [2]

Удалено модератором
Примечание: Создание пустых сообщений


 
nOvell   (2004-08-13 19:49) [3]

Можно плясать от этого:
Принцип, вкратце, взять текст из RichEdita в формате RTF и навставлять управляющих символов. Что то типа примера внизу - выделит все вхождения "" курсивом.
procedure TForm1.Button1Click(Sender: PObj);
var s: string; i : integer;
begin
s := RichEdit1.RE_Text[reRTF,false];
i := pos("",s);
while i <> 0 do
begin
 s := Copy(s,1,i-1)+"\i1\i0"+CopyEnd(s,i+3);
 i := posex("",s,i+9);
end;
RichEdit1.Clear;
RichEdit1.RE_InsertRTF(s);
end;

P.S. Таким способом можно легко получить выдиление курсивом, bold"ом, подчеркивание, и изменить размер шрифта. Но если тебе нужно поменять цвет или шрифт - сразу удавись. У меня есть юнит Html2RTf - его пять человек c VB переписывало :) там есть такая фича.(правдо он дохрена чего не умеет, но основные тэги + цвет + шрифты, он держит) - мне этого хватило. +Я еще туда поддержку иероглифов засандалил :).

Если кто знает иной, кроме форматирования на уровне кода RTF, способ - мне тоже будет интересно узнать.


 
z007   (2004-08-14 00:23) [4]

1. Все правильно.
2. Если RTF то на уровне кода.
3. Если не на уровне кода, то это уже не KOL...
4. Или не RTF...

1. Шутка.
2. Вообще, синтаксическая подсветка - это не стандарт для RTF, так что, нао обрабатывать весь текст, чтобы ее получить (на уровне компонента SintaxRTF это, правда, можно автоматизировать).
3. Другие варианты есть. Их примерно столко же, сколько способов перемещения файлов в Explorer"е. Но, боюсь, самый кодоэкономичный - все-таки на уровне кода.
4. Ну, и конечно, подсветку можно сделать по принципам sintaxEdit (см.код.)


 
=Sniper=   (2004-08-14 00:49) [5]

Нет мне нужно подсветить обычный текстовый файл например исходник на СИ:
т.е подсветить слова void, int, #include которые читаются в RichEdit


 
Мастер ©   (2004-08-14 13:42) [6]

Хоть и не в КОЛ, но может помочь:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Buttons, ToolWin, ComCtrls, StdCtrls;

type
 TDelim= Set of char;

 TForm1 = class(TForm)
   re: TRichEdit;
   od: TOpenDialog;
   ToolBar1: TToolBar;
   SpeedButton1: TSpeedButton;
   procedure SpeedButton1Click(Sender: TObject);
   procedure reChange(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 Delims: TDelim=[" ","[","]","(",")",":",";",".",#13,#10,#09,"="];
 StartPos: Integer;
implementation

{$R *.dfm}

procedure SetBold(re: TRichEdit;const aPos,aLen: Integer);
begin
 re.SelStart := aPos;
 re.SelLength := aLen;
 re.SelAttributes.Color := clNavy;
 re.SelAttributes.Style := [fsBold];
 re.SelLength := 0;
end;

function isTags(const aSrc: String;aPos,MaxLen: Integer ): Integer;
const aTagsWord: array[0..25] of String=(
    "TYPE","CONST","FUNCTION","STRING","WHILE",
    "VAR","INTEGER","PROCEDURE","BEGIN","END",
    "CLASS","INITIALIZATION","FINALIZATION","UNIT","IMPLEMENTATION",
    "STRING","TRY","FINALLY","EXCEPT","FOR",
    "IF","THEN","ELSE","PROGRAM","USES",
    "CASE"
    );
var
 i: Integer;
 s: String;
 LenTag: Integer;
 LenASrc: Integer;
begin
 Result := 0;
 LenASrc := Length(aSrc);
 for i := 0 to High(aTagsWord) do
 begin
   LenTag := Length(aTagsWord[i]);
   s :=UpperCase(Copy(aSrc,aPos,LenTag));
   if s=aTagsWord[i] then
   begin
     if LenASrc>=aPos+LenTag then
     begin
       if aSrc[aPos+LenTag] in Delims then
       begin
         if aPos>1 then
         begin
           if aSrc[aPos-1] in Delims then
           begin
             Result := LenTag;
             Exit;
           end
           else continue;
         end
         else
         begin
           Result := LenTag;
           Exit;
         end;
       end;
     end;
   end;
 end;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
 i: Integer;
 Len,LenStr: Integer;
 s: String;
begin
 if od.Execute then re.Lines.LoadFromFile(od.FileName);
 i := 1;
 s := re.Lines.Text;
 LenStr := Length(s);
 while i<=LenStr do
 begin
   if (s[i] = #13) or (s[i] = #10) then
   begin
     Inc(i);
     continue;
   end;
   Len := isTags(s,i,50);
   if Len<>0 then
   begin
     SetBold(re,i-1,Len);
     Inc(i,Len);
   end
   else Inc(i);
 end;
end;

procedure TForm1.reChange(Sender: TObject);
var
 Pos1: Integer;
 re: TRichEdit;
begin
 re := (Sender as TRichEdit);

 StartPos := re.SelStart;

end;

end.


 
=Sniper=   (2004-08-14 15:39) [7]

2 Мастер: Спасибо! Попытаюсь извлеч пользу! ;-)


 
=Sniper=   (2004-08-15 01:40) [8]

Вот почему-то в KOL не правильно работает, а в VCL абсолютно правильно!!
Это уже второй способ подсветки который работает неправильно и ИМЕННО В КОЛ!


 
nOvell   (2004-08-15 08:43) [9]

Все таки придется тебе доки по формату RTF читать :j


 
=Sniper=   (2004-08-16 12:13) [10]

Не ну почему не работает в KOL, А РАБОТАЕТ В VCL!!!!!


 
TRUF   (2004-08-16 16:05) [11]

А ты не равняй KOL с VCL.


 
=Sniper=   (2004-08-16 16:31) [12]

Да я и не ровняю! Я просто хочу разобраться почему не работает в KOL!!!!



Страницы: 1 вся ветка

Форум: "KOL";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.051 c
3-1107361560
salexn
2005-02-02 19:26
2005.03.06
утилита для работы с MSSQL


14-1108141278
AlexG
2005-02-11 20:01
2005.03.06
Сколько стоит изменение дизайна сайта?


1-1108810110
ЦУКОР5
2005-02-19 13:48
2005.03.06
закрытие MDIChild формы


3-1107535960
Назаров Евгений
2005-02-04 19:52
2005.03.06
Поток Thread и InterBase


4-1106394485
Islander
2005-01-22 14:48
2005.03.06
Как получить из системы названия кнопок Retry, Ignore, Cancel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский