Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Узнать раскраску фона RichEdit   Найти похожие ветки 

 
картман ©   (2010-02-26 17:41) [0]

Всем доброго времени суток!

Нужно раскрашивать фон (шрифта?) RichEdit, крашу так:

procedure RESetSelBgColor(RichEdit: TRichEdit; AColor: TColor);
var
 Format: CHARFORMAT2;
begin
 FillChar(Format, SizeOf(Format), 0);
 with Format do
 begin
   cbSize := SizeOf(Format);
   dwMask := CFM_BACKCOLOR;
   crBackColor := AColor;
   Richedit.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 RESetSelBgColor(RichEdit1, clYellow);
end;

Потом мне нужно получить смещение и длину всех раскрашенных областей. Получаю так:

function REGetSelBgColor(RichEdit: TRichEdit): Boolean;
var
 Format: CHARFORMAT2;
begin
 FillChar(Format, SizeOf(Format), 0);
 with Format do
 begin
   cbSize := SizeOf(Format);
   dwMask := CFM_BACKCOLOR;
   Richedit.Perform(EM_GETCHARFORMAT, SCF_SELECTION, Longint(@Format));
 end;
 Result := Format.crBackColor > 0;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
 st: string;
 i: Integer;
 InSel: Boolean;
begin
 st := "";
 InSel := False;
 for i := 0 to Length(RichEdit1.Text) - 1 do
 begin
   RichEdit1.SelStart := i;
   RichEdit1.SelLength := 1;
   if REGetSelBgColor(RichEdit1) then
   begin
     if not InSel then
     begin
       InSel := True;
       st := st + #13#10 + IntToStr(i);
     end;
   end
   else begin
     if InSel then
       st := st + "-" + IntToStr(i - 1);
     InSel := False;
   end;
 end;
 ShowMessage(st);
end;

Как получить то же самое не посылая сообщение для каждого символа?


 
KilkennyCat ©   (2010-02-26 18:26) [1]

посмотреть формат ртф и работать с ним нативно


 
картман ©   (2010-02-26 21:54) [2]


> KilkennyCat ©   (26.02.10 18:26) [1]

о-ох...
спасибо.



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

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.046 c
15-1269434373
Незнайка на Луне
2010-03-24 15:39
2010.08.27
Почему все математики сходят с ума?


2-1275466490
tamako
2010-06-02 12:14
2010.08.27
как открыть текст из поля Memo в Worde?


2-1269469596
s_t_d
2010-03-25 01:26
2010.08.27
Ступор при редактировании поля VARCHAR с пом. FIBPLus


15-1268761702
AntonioBanderas
2010-03-16 20:48
2010.08.27
База комплектующих для АРМ


2-1275300108
[true]TRIx
2010-05-31 14:01
2010.08.27
как разместить MainMenu не в самом верху