|
Вопрос # 1 350/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!Как по клику мыши
подсветить строку в RichEdit.
 |
Вопрос задал: GAZ (статус: Посетитель)
Вопрос отправлен: 18 февраля 2008, 18:42
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Feniks
Здравствуйте, GAZ!
Не понятно, какую именно вы хотите подсветить строку или чатсь строки, и что значит "подсветить" - поменять фон текста или же сам цвет текста...
В Приложении два примера: подсветки HTML тегов в RichEdit и изменение цвета выделения.
Приложение: Переключить в обычный режим-
-
- procedure HTMLSyntax(RichEdit: TRichEdit; TextCol,
- TagCol, DopCol: TColor);
- var
- i, iDop: Integer;
- s: string;
- Col: TColor;
- isTag, isDop: Boolean;
- begin
- iDop := 0;
- isDop := False;
- isTag := False;
- Col := TextCol;
- RichEdit.SetFocus;
-
- for i := 0 to Length(RichEdit.Text) do
- begin
- RichEdit.SelStart := i;
- RichEdit.SelLength := 1;
- s := RichEdit.SelText;
-
- if (s = '<') or (s = '{') then isTag := True;
-
- if isTag then
- if (s = '"') then
- if not isDop then
- begin
- iDop := 1;
- isDop := True;
- end
- else
- isDop := False;
-
- if isTag then
- if isDop then
- begin
- if iDop <> 1 then Col := DopCol;
- end
- else
- Col := TagCol
- else
- Col := TextCol;
-
- RichEdit.SelAttributes.Color := Col;
-
- iDop := 0;
-
- if (s = '>') or (s = '}') then isTag := False;
- end;
-
- RichEdit.SelLength := 0;
- end;
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- RichEdit1.Lines.BeginUpdate;
- HTMLSyntax(RichEdit1, clBlue, clRed, clGreen);
- RichEdit1.Lines.EndUpdate;
- end;
- ================================
-
-
- uses
- RichEdit;
-
- procedure RE_SetSelBgColor(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;
-
- // Example: Set clYellow background color for the selected text.
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- RE_SetSelBgColor(RichEdit1, clYellow);
- end;
 |
Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 19 февраля 2008, 11:10
Оценка за ответ: 4
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 19 февраля 2008, 12:01; участников в обсуждении: 1.
|
GAZ (статус: Посетитель), 19 февраля 2008, 12:01 [#1]:
Уважаемый Feniks !
Я хочу подсветить ту строку(или для RichEdit правильнее будет линию ?)на которую пришёлся клик, и сделать я это хочу без участия кнопки как в ваших примерах.Возможно ли это.(Ну что типа клика в
ListBox,когда строка подсвечивается синим цветом?)
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|