2011-12-26 7 views
2

複数の行を表示できるようにTMemoを使用します。delphi 7では、選択したテキスト属性をTMemoで太字に変更するにはどうすればよいですか?

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

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

私はDelphi 7を使用しています。

解答を得るには助言を受けてください。手伝ってくれてありがとう。

+4

TMemoは、そのままの状態ではサポートしていないため、これを行うには多くの作業が必要になります。あなたはTRichEditに切り替える方が良いかもしれませんし、そのフォーマットで作業する方法を学びます。 –

+0

「TMemo」を一切実行できません。 'TRichEdit'で簡単です。 –

+0

TRichEditを使用するためのヒントはありますか?ありがとう – Nalu

答えて

2

メモコントロールでテキストの書式を設定することはできません。豊富な編集コントロール、TRichEditが必要です。

は、現在の選択を太字にするためには、あなたがこれを行う:

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

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

+0

ダビデに感謝..それは働いた。 – Nalu

2

ここでは、RichEditを使用するプログラムの一部です。行の一部が黒で表示され、青で部分的に太字で表示されます。 'Text'は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; 
+0

RichEditを使用してBoldとしてフォントを設定できます。誰かがCtrl + Bホットキーを設定してxyz手続きを呼び出すのを助けることができますか? – Nalu

+0

この回答に太字がないのはなぜですか? –

+0

@David:私は質問に「太字」を気付かなかったので!私は私の答えを編集します。 –

関連する問題