下記のようにコード上で色を変更してもダイアログに反映されません。
TEdit.Font.Color := clWhite;
プロパティなどの設定で、何か変更する部分があるのでしょうか?
よろしくお願いします。
使っているコントロール名を使用してくださいな。
Edit1.Font.Color := clRed;
こんにちわ。
全部のEdtiを変更されるんですか?
for I:=1 to ComponentCount do begin
if Components[I] is TEdit then begin
(Components[i] as TEdit).Font.Color := clWhite;
end;
end;
すいません。
条件が抜けていました。
「ディセーブル時のエディットのフォントカラーを変更するには?」でした。
ママんさん、灼熱さん、せっかくのレスをすいませんでした。
どうぞ、よろしくお願いします。
編集する必要がないなら、Panelで代用すべし。
編集 削除> 「ディセーブル時のエディットのフォントカラーを変更するには?」でした。
そのようなプロパティは、Delphi標準のVCLにはありません。
世の中のコンポーネントを探せばあるかもしれませんが、自分は知りません。
if Edit1.Enabled then
Edit1.Font.Color := clWindowText
else
Edit1.Font.Color := clBlue
Edit1.Enabled を変更したとこで、色を変えさせなさい。
EditのEnabledがFalseの時に文字色が常にグレーになるのは WinControlの仕様...なので、EditをPanelに乗せて、そのPanelのEnabledを切り換える手もあり。
編集 削除すいません、Readonlyと勘違いしていました。
二つ上のレスは無視してください。
> WinControlの仕様...
ということで、この仕様を無視したDisable状態のフォント色変更方法
VCLを無視するので、Disable 状態でも、Edit.Enabled = True になります。
procedure TForm1.Button1Click(Sender: TObject);
var
wstyle :Integer;
begin
if Edit2.Tag = 0 then begin
wstyle := GetWindowLong(Edit2.Handle, GWL_STYLE);
wstyle := wstyle or WS_DISABLED;
SetWindowLong(Edit2.Handle, GWL_STYLE, wstyle);
Edit2.Font.Color := clRed;
Edit2.Tag := 1;
end
else begin
wstyle := GetWindowLong(Edit2.Handle, GWL_STYLE);
wstyle := wstyle AND not WS_DISABLED;
SetWindowLong(Edit2.Handle, GWL_STYLE, wstyle);
Edit2.Font.Color := clYellow;
Edit2.Tag := 0;
end;
end;
暑い・・・
たとえばJVCLのTJvEditだとDisabledTextColorプロパティで設定できますね。
編集 削除仕様があり、プロパティを変更して色を変更することは無理という事を理解しました。
別な方法で簡単にできそうなのは、ダイアン2さんの案ですかね。
たくさんのレスをありがとうございました。