Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 350

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!Как по клику мыши
подсветить строку в RichEdit.

GAZ Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: GAZ (статус: Посетитель)
Вопрос отправлен: 18 февраля 2008, 18:42
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Feniks

Здравствуйте, GAZ!
Не понятно, какую именно вы хотите подсветить строку или чатсь строки, и что значит "подсветить" - поменять фон текста или же сам цвет текста...
В Приложении два примера: подсветки HTML тегов в RichEdit и изменение цвета выделения.

Приложение:
  1.  
  2.  
  3. procedure HTMLSyntax(RichEdit: TRichEdit; TextCol,
  4. TagCol, DopCol: TColor);
  5. var
  6. i, iDop: Integer;
  7. s: string;
  8. Col: TColor;
  9. isTag, isDop: Boolean;
  10. begin
  11. iDop := 0;
  12. isDop := False;
  13. isTag := False;
  14. Col := TextCol;
  15. RichEdit.SetFocus;
  16.  
  17. for i := 0 to Length(RichEdit.Text) do
  18. begin
  19. RichEdit.SelStart := i;
  20. RichEdit.SelLength := 1;
  21. s := RichEdit.SelText;
  22.  
  23. if (s = '<') or (s = '{') then isTag := True;
  24.  
  25. if isTag then
  26. if (s = '"') then
  27. if not isDop then
  28. begin
  29. iDop := 1;
  30. isDop := True;
  31. end
  32. else
  33. isDop := False;
  34.  
  35. if isTag then
  36. if isDop then
  37. begin
  38. if iDop <> 1 then Col := DopCol;
  39. end
  40. else
  41. Col := TagCol
  42. else
  43. Col := TextCol;
  44.  
  45. RichEdit.SelAttributes.Color := Col;
  46.  
  47. iDop := 0;
  48.  
  49. if (s = '>') or (s = '}') then isTag := False;
  50. end;
  51.  
  52. RichEdit.SelLength := 0;
  53. end;
  54.  
  55. procedure TForm1.Button1Click(Sender: TObject);
  56. begin
  57. RichEdit1.Lines.BeginUpdate;
  58. HTMLSyntax(RichEdit1, clBlue, clRed, clGreen);
  59. RichEdit1.Lines.EndUpdate;
  60. end;
  61. ================================
  62.  
  63.  
  64. uses
  65. RichEdit;
  66.  
  67. procedure RE_SetSelBgColor(RichEdit: TRichEdit; AColor: TColor);
  68. var
  69. Format: CHARFORMAT2;
  70. begin
  71. FillChar(Format, SizeOf(Format), 0);
  72. with Format do
  73. begin
  74. cbSize := SizeOf(Format);
  75. dwMask := CFM_BACKCOLOR;
  76. crBackColor := AColor;
  77. Richedit.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));
  78. end;
  79. end;
  80.  
  81. // Example: Set clYellow background color for the selected text.
  82. procedure TForm1.Button1Click(Sender: TObject);
  83. begin
  84. RE_SetSelBgColor(RichEdit1, clYellow);
  85. end;


Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 19 февраля 2008, 11:10
Оценка за ответ: 4


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 19 февраля 2008, 12:01; участников в обсуждении: 1.
GAZ

GAZ (статус: Посетитель), 19 февраля 2008, 12:01 [#1]:

Уважаемый Feniks !
Я хочу подсветить ту строку(или для RichEdit правильнее будет линию ?)на которую пришёлся клик, и сделать я это хочу без участия кнопки как в ваших примерах.Возможно ли это.(Ну что типа клика в
ListBox,когда строка подсвечивается синим цветом?)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:55
Выполнено за 0.02 сек.