Показать сообщение отдельно
  #10  
Старый 07.04.2016, 13:30
Kraeved Kraeved вне форума
Прохожий
 
Регистрация: 21.03.2016
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Столкнулся с проблемой форматирования текста. В общем, в программе есть формы с RichEdit-ами. Для RichEdit-ов для редактирования текста создал универсальный список процедур ActionManager - один для всех. Для стандартных Action типа EditCut, EditPaste, EditCopy вызов соответствующей Action работает в любой форме и в любом RichEdit-е. Но те Action, которые я написал, работают только на той форме, на которой расположен ActionManager. Проблема в том, что я не знаю, как определить в Action указатель на активную в данный момент форму ( с фокусом ввода). Текст вот:
Код:
procedure TForm3.ActionEditPlusMinusExecute(Sender: TObject);
var
  RichText: TRichEdit;
begin
if ActiveControl is TRichEdit then
  begin
  RichText:=TRichEdit(ActiveControl);
  SendMessage(RichText.Handle, EM_REPLACESEL, 0, integer(PCHAR(PlusMinus)));
  end;
end;
Это процедура вставляет знак "плюс-минус" в текст RichEdit-а. Здесь ActiveControl ищет активный RichEdit только в Form3. Но, вызов этой процедуры нужен также из другой активной формы. Как сделать, чтобы не плодить одни и те же action в каждой форме???
Ответить с цитированием