Можно ли избежать потери 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;

но это не красиво (имхо).

Другие вопросы по тегам