ОК, теперь я думаю, что вижу проблему. У вас есть 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;
но это не красиво (ИМХО).