Можно завести под переменную рич типа
Код:
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;
будет работать с любым рич, где есть выделенный текст