Можно ли избежать потери TRichEdit при нажатии кнопки (например, жирным шрифтом)?
Используя delphi и rich edit, мне нужно повторить что-то по образцу этого самого редактора, в котором я пишу, когда вы выбираете текст и нажимаете кнопку "Жирный шрифт", текст остается выделенным, а не отменяет выбор и теряет фокус.
Как мне этого добиться?
Спасибо.
1 ответ
Хорошо, теперь я думаю, что вижу проблему. У тебя есть TRichEdit
и TButton
, Тогда вы делаете что-то вроде
procedure TForm1.Button1Click(Sender: TObject);
begin
with RichEdit1.SelAttributes do
Style := Style + [fsBold];
end;
и вас раздражает тот факт, что элемент управления Rich Edit теряет фокус при нажатии Button1
, Обычно вы используете TToolButton
в TToolbar
как кнопка "жирный". Это не заставит редактора потерять фокус, потому что TToolButton
это не оконный элемент управления.
Если вы не хотите использовать TToolBar
(или любой эквивалентный элемент управления), просто используйте TSpeedButton
вместо TButton
,
Обычный способ сделать это, однако, это использовать TActionList
, Удалите такой элемент управления в своей форме, а затем добавьте новое действие, назовите его ActnBold
или что-то. Установите заголовок 'Bold'
намек на 'Make the selection bold.'
добавить ярлык Ctrl+B
, и писать
with RichEdit1.SelAttributes do
Style := Style + [fsBold];
в его OnExecute
событие. Затем вы можете связать это действие с любой кнопкой, кнопкой скорости, кнопкой панели инструментов, элементом меню,..., просто установив элемент управления Action
собственность на ActnBold
,
Если вы действительно хотите использовать оконный элемент управления, такой как TButton
тогда вы можете сделать
procedure TForm1.Button1Click(Sender: TObject);
begin
with RichEdit1.SelAttributes do
Style := Style + [fsBold];
RichEdit1.SetFocus;
end;
но это не красиво (имхо).