Показать сообщение отдельно
  #3  
Старый 10.03.2017, 04:17
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Можно завести под переменную рич типа
Код:
var
  Form1: TForm1;
  ds: TRichEdit;
...
и тогда явно указывать при отпускании ПКМ
Код:
procedure TForm1.RichEdit1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 if Button = mbRight then
  ds:= Sender as TRichEdit;
end;
если задать этот обработчик для всех ричей, будет работать только от клика мышки, или ещё можно определить RichEdit где .SelText <> '', без перебора компонентов правда не обойтись
Код:
function TForm1.IsSelText: boolean;
var
i: integer;
begin
 Result:= false;
 for i := 0 to ComponentCount - 1 do
   if Components[i] is TRichEdit then
    if (Components[i] as TRichEdit).SelText <> '' then
     begin
      Result:= true;
      ds:= Components[i] as TRichEdit;
     end;
end;
а в коде тогда так
Код:
// Обрабатываем процедуру выделения текста "Жирный"
procedure TForm1.N4Click(Sender: TObject);
var
t:string;
 begin
  if IsSelText then
   begin
  t:=ds.SelText;
  ds.SelStart:=pos(t,ds.Text)-1;
  ds.SelLength:=Length(t);
  with ds.SelAttributes do
   begin
     if Style<>[fsBold] then
      Style:=Style+[fsBold]
     else
      Style:=Style-[fsBold];
   end;
  t:='';
  ds.SetFocus;
  end;
  end;
будет работать с любым рич, где есть выделенный текст
Ответить с цитированием