3

TMemoを使用して、複数の行を表示できるようにします。

ショートカットCtrl+Bを使用して、TMemoで選択したテキスト属性を太字に変更したいと思います。

たとえば、ユーザーは「こんにちは、お元気ですか?」と入力します。Tmemoで、ユーザーが「How」を選択してCtrl + Bを押すと、そのTMemoの太字に「How」のみが表示されるようにしたいと思います。

Delphi7を使用しています。

解決策を得るためにアドバイスしてください。手伝ってくれてありがとう。

4

2 に答える 2

3

メモコントロールでテキストをフォーマットすることはできません。豊富な編集コントロールが必要ですTRichEdit

現在の選択を太字にするには、次のようにします。

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

のようなショートカットに応答してコードを呼び出すための好ましい方法CTRL+Aは、アクションを使用することです。フォームにを追加TActionListし、そのアクションリストにアクションを追加します。OnExecute選択したテキストの太字を実行するコードを指すようにアクションのイベントハンドラーを設定します。Shortcutプロパティをに設定しますCtrl+A。アクションを使用して、ユーザーイベントの制御を一元化できるようにします。通常、同じアクションを実行するツールボタン、メニュー項目、およびコンテキストメニュー項目もあり、ここでアクションが独自に発生します。

于 2011-12-26T14:25:07.653 に答える
2

これは、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;
于 2011-12-26T11:21:42.487 に答える