Как изменить выделенный текстовый атрибут на TMemo в Delphi 7 жирным шрифтом? - PullRequest
3 голосов
/ 26 декабря 2011

Я использую TMemo для отображения нескольких строк.

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 26 декабря 2011

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

Чтобы сделать выделение жирным, вы сделаете следующее:

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

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

2 голосов
/ 26 декабря 2011

Вот часть программы, которую я написал, которая использует 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;
...