Как изменить выделенный атрибут текста на жирный в TMemo в Delphi 7?

Я использую TMemo, чтобы иметь возможность отображать несколько строк.

Я хочу изменить выделенный текстовый атрибут в TMemo на жирный, используя сочетание клавиш Ctrl+B.

Например, Пользователь вводит "Привет, как дела?" в Tmemo я хочу, чтобы, когда пользователь выбирает "How" и нажимал Ctrl + B, тогда только "How" должно отображаться жирным шрифтом в этом TMemo.

Я использую Delphi 7.

Пожалуйста, совет, чтобы получить решение. Спасибо за помощь.

2 ответа

Решение

Вы не можете отформатировать текст в элементе управления заметкой. Вам нужен богатый контроль редактирования, TRichEdit,

Для того, чтобы сделать текущий выбор жирным, вы делаете это:

RichEdit.SelAttributes.Style := RichEdit.SelAttributes.Style + [fsBold];

Предпочтительный способ вызвать код в ответ на ярлык, такой как CTRL+A, - это использовать действия. Добавить TActionList в форму и добавить действие в этот список действий. Установить действие OnExecute обработчик события, указывающий на код, который выполняет выделение выделенного текста. Установить Shortcut собственность на Ctrl+A, Используйте действия, чтобы вы могли централизовать контроль пользовательских событий. Как правило, также могут быть кнопка инструмента, пункт меню и пункт контекстного меню, которые выполняли одно и то же действие, и именно здесь действия вступают в свои права.

Вот часть программы, которую я написал, которая использует RichEdit; часть линии отображается черным, часть синим и, возможно, полужирным красным. "Текст" - это поле RichEdit.

procedure TWhatever.InsertText (const atext, btext, ctext: string);
begin
 with RichEdit1 do
  begin
   selstart:= length (text);
   sellength:= 0;
   SelAttributes.Color:= clBlack; 
   seltext:= '[' + atext + '] ';

   selstart:= length (text);
   sellength:= 0;
   SelAttributes.Color:= clBlue;
   seltext:= btext + ' ';

   if ctext <> '' then
    begin   // trap non-existent answers
     selstart:= length (text);
     sellength:= 0;
     SelAttributes.Color:= clRed;
     SelAttributes.Style:= [fsBold];
     seltext:= ctext + ' ';
     SelAttributes.Style:= [];
    end;
   lines.add ('');  // new line
  end;
end;
Другие вопросы по тегам