メッセージの色


宇治抹茶  2009-06-15 03:46:07  No: 34763

表示するメッセージの色を変更する方法に関しての質問です。
messagedlgなどの関数を表示する文字列の色を変更することは可能
でしょうか?
大文字Aなら赤、小文字aなら青など同じ文字列内で個別に色を変更したい
です。
例えば
messagedlg(moji1+moji2)であればmoji1を赤で表示し、moji2を青に
表示したいのです。


みんみん  2009-06-15 07:39:26  No: 34764

メッセージダイアログをカスタマイズしたいなら
CreateMessageDialog関数などがいいかもしれませんよ。

質問のような場合は、上の関数とTLabelの動的生成でいけると思います。


宇治抹茶  2009-06-16 00:07:48  No: 34765

captionにて文字列をくっつけてみたのですが、うまくいきません。
moji1:='A';
moji2:='B';
with moji1 do begin
        Font.color := clRed;
end;
with moji2 do begin
        Font.color := clAqua;
end;
with TLabel.Create(Self) do begin 
      Parent  := Self;               
      Caption := moji1+moji2;
end;
文字が表示されないのです。
というかくっつけなくて片方だけでも表示されません。


宇治抹茶  2009-06-16 00:47:03  No: 34766

すみません書き忘れました。
      Msgdlg := CreateMessageDialog(moji2,mtWarning, [mbOK]);
としてcaption:=moji1+Msgdlg;
とするとMsgdlg だけ表示しました。


宇治抹茶  2009-06-16 00:48:52  No: 34767

重ね重ね申し訳ないです。
caption:=moji1+Msgdlg;は
caption:=moji1+IntToStr(Msgdlg.ShowModal);
でした。


Manbon  2009-06-16 01:47:50  No: 34768

CreateMessageDialogはこんな感じで使用できます。
参考までに・・・

var
  MsgDlg : TForm;
  DlgType: TMsgDlgType;
  i: Byte;
begin
  DlgType := mtInformation;
  MsgDlg := CreateMessageDialog('かきくけこ', DlgType, [mbOK]);
  with MsgDlg do begin
    try
      Caption := 'あいうえお';
      TButton(Components[2]).Caption := 'おーけー';

      for i := 0 to ComponentCount - 1 do begin
        if Components[i] is TLabel then begin
          (Components[i] as TLabel).WordWrap := False;
          with (Components[i] as TLabel).Font do begin
            Charset := DEFAULT_CHARSET;
            Color := clRed;
            Size := 10;
          end;
          Break;
        end;
      end;

      ShowModal;
    finally
      Free;
    end;
  end;
end;


宇治抹茶  2009-06-16 02:33:14  No: 34769

なるほどー。使い方ありがとうございました。
あとはかきくけこの’か’を赤で’き’を青にしたいのです。
これは無理なのでしょうか?


みんみん  2009-06-16 07:56:34  No: 34770

const
  msg1 ='か';
  msg2 ='き';
var
  Dlg :TForm;
  Lbl :TLabel;
  i   :Integer;
begin
  Dlg :=CreateMessageDialog(msg1, mtInformation, [MBOK]);
  with Dlg do begin
    try
      for i :=0 to ComponentCount -1 do
        if Components[i] is TLabel then
        begin
          Lbl :=Components[i] as TLabel;
          Lbl.AutoSize :=True;
          Lbl.WordWrap :=False;
          Lbl.Font.Color :=clRed;
          Break;
        end;

      with TLabel.Create(Dlg) do begin
        Parent :=Dlg;
        Left :=Lbl.Left + Lbl.Width;
        Top  :=Lbl.Top;
        Caption :=msg2;
        Font.Color :=clBlue;
      end;

      ShowModal;
    finally
      Free;
    end;
  end;
end;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加