TMemoを使用して、複数の行を表示できるようにします。
ショートカットCtrl+Bを使用して、TMemoで選択したテキスト属性を太字に変更したいと思います。
たとえば、ユーザーは「こんにちは、お元気ですか?」と入力します。Tmemoで、ユーザーが「How」を選択してCtrl + Bを押すと、そのTMemoの太字に「How」のみが表示されるようにしたいと思います。
Delphi7を使用しています。
解決策を得るためにアドバイスしてください。手伝ってくれてありがとう。
メモコントロールでテキストをフォーマットすることはできません。豊富な編集コントロールが必要ですTRichEdit
。
現在の選択を太字にするには、次のようにします。
RichEdit.SelAttributes.Style := RichEdit.SelAttributes.Style + [fsBold];
のようなショートカットに応答してコードを呼び出すための好ましい方法CTRL+Aは、アクションを使用することです。フォームにを追加TActionList
し、そのアクションリストにアクションを追加します。OnExecute
選択したテキストの太字を実行するコードを指すようにアクションのイベントハンドラーを設定します。Shortcut
プロパティをに設定しますCtrl+A
。アクションを使用して、ユーザーイベントの制御を一元化できるようにします。通常、同じアクションを実行するツールボタン、メニュー項目、およびコンテキストメニュー項目もあり、ここでアクションが独自に発生します。
これは、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;