И снова здравствуйте!
Хотел бы поинтересоваться у глубокоуважаемых форумчан таким вопросом: как можно сделать перебор по 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;