Показать сообщение отдельно
  #1  
Старый 08.03.2017, 00:30
Аватар для ffpereverzev
ffpereverzev ffpereverzev вне форума
Новичок
 
Регистрация: 14.02.2017
Сообщения: 50
Версия Delphi: Delphi 7
Репутация: 10
Вопрос В каком RichEdit нажата кнопка?

И снова здравствуйте!
Хотел бы поинтересоваться у глубокоуважаемых форумчан таким вопросом: как можно сделать перебор по RichEdit? (ответ "в цикле" не устраивает, так как это и так понятно. Вопрос "КАК?").

Объясню суть проблемы:

Есть n-ое количество RichEdit (допустим, 10). Я создал ActionList с корректировкой свойств шрифта (жирный, курсив, подчеркнутый). При описании первого же Action-а я столкнулся с проблемой: как понять, в каком из RichEdit-ов было замечено нажатие правой кнопки мыши?
Может, Вы, уважаемые форумчане, подскажете как это можно сделать или предложите более адекватный или простой путь к решению данной проблемы?

P.S. Вариант с PopupMenu не предлагать, так как получится очень громоздко и делать придется для каждого RichEdit в отдельности (если я все правильно понимаю). Я, во всяком случае, сделал с ним вот это:

Код:
// Обрабатываем процедуру выделения текста "Жирный"
procedure TForm1.N4Click(Sender: TObject);
var t:string;
 begin
  t:=RichEdit1.SelText;
  RichEdit1.SelStart:=pos(t,RichEdit1.Text)-1;
  RichEdit1.SelLength:=Length(t);
  with RichEdit1.SelAttributes do
   begin
     if Style<>[fsBold] then
      Style:=Style+[fsBold]
     else
      Style:=Style-[fsBold];
   end;
  t:='';
  RichEdit1.SetFocus;
end;

// Обрабатываем процедуру выделения текста "Курсив"
procedure TForm1.N8Click(Sender: TObject);
var t:string;
 begin
  t:=RichEdit1.SelText;
  RichEdit1.SelStart:=pos(t,RichEdit1.Text)-1;
  RichEdit1.SelLength:=Length(t);
  with RichEdit1.SelAttributes do
   begin
     if Style<>[fsItalic] then
      Style:=Style+[fsItalic]
     else
      Style:=Style-[fsItalic];
   end;
  t:='';
  RichEdit1.SetFocus;
end;

// Обрабатываем процедуру выделения текста "Подчеркнутый"
procedure TForm1.N9Click(Sender: TObject);
var t:string;
 begin
  t:=RichEdit1.SelText;
  RichEdit1.SelStart:=pos(t,RichEdit1.Text)-1;
  RichEdit1.SelLength:=Length(t);
  with RichEdit1.SelAttributes do
   begin
     if Style<>[fsUnderline] then
      Style:=Style+[fsUnderline]
     else
      Style:=Style-[fsUnderline];
   end;
  t:='';
  RichEdit1.SetFocus;
end;
Ответить с цитированием