表示するメッセージの色を変更する方法に関しての質問です。
messagedlgなどの関数を表示する文字列の色を変更することは可能
でしょうか?
大文字Aなら赤、小文字aなら青など同じ文字列内で個別に色を変更したい
です。
例えば
messagedlg(moji1+moji2)であればmoji1を赤で表示し、moji2を青に
表示したいのです。
メッセージダイアログをカスタマイズしたいなら
CreateMessageDialog関数などがいいかもしれませんよ。
質問のような場合は、上の関数とTLabelの動的生成でいけると思います。
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;
文字が表示されないのです。
というかくっつけなくて片方だけでも表示されません。
すみません書き忘れました。
Msgdlg := CreateMessageDialog(moji2,mtWarning, [mbOK]);
としてcaption:=moji1+Msgdlg;
とするとMsgdlg だけ表示しました。
重ね重ね申し訳ないです。
caption:=moji1+Msgdlg;は
caption:=moji1+IntToStr(Msgdlg.ShowModal);
でした。
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;
なるほどー。使い方ありがとうございました。
あとはかきくけこの’か’を赤で’き’を青にしたいのです。
これは無理なのでしょうか?
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;
ツイート | ![]() |