Как изменить выделенный атрибут текста на жирный в 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;