お世話になります。
Windows7、Delphi2010
おそらくVista、7固有の問題だと思いますが、タイトルの通りです。
(exeをXP上で実行した所「*」表示になったので)
既存システムから画面の移植を行っているのですが、
そのシステムでは設計画面上でこそ「●」になっていますが
実行時は「*」になっているのです。
私のプロジェクト上に持ってくると、設計時も実行時も「●」になってしまいます。
元システムの余計な部分を全てそぎ落とし見比べてみましたが
設定箇所が見つかりませんでした。
よろしくお願い致します。
MSDNによるとCommon Controlのバージョン6以降のEditコントロールのパスワード文字のデフォルト値が●に変更になっててDelphiの方でもテーマが有効でPasswordCharが*の時は、コントロールのデフォルトに合わせる様になってるのが問題みたいですね。
Formの宣言の上に下記を追加したら良いかと
TEdit = class(StdCtrls.TEdit)
procedure CreateWnd; override;
end;
procedure TEdit.CreateWnd;
begin
inherited;
if PasswordChar <> #0 then
SendMessage(Handle, EM_SETPASSWORDCHAR, Ord(PasswordChar), 0);
end;
auさん
一発でバッチリできました。ありがとうございます。
ただ元システムの方では、全てのソースの記述を削りましたが、
教えて頂いた様な処理は行っていませんでした。
(その状態でも*表示)
元システム実行時、StyleプロパティがcsDropDownListのコンボボックスが
角ばった表示になるというのもあり、
クラシックスタイル?的な設定をしているのではと睨んでいるのですが見つかりません。
(設計画面ではコンボボックスは丸みをおびたやつ、パスワードは●です)
後学のために引き続きお願い致します。
元システムはDelphiのバージョンが違ったりするんでしょうか?
「プロジェクトオプション」-「アプリケーション」のランタイムテーマを有効にするのチェックが影響してるのかもしれません。
両方ともDelphi2010です。
元システムは ランタイムテーマ無効
(アイコンとランタイムテーマの変更自体、グレーになってて出来ない…何故じゃ…)
私のプロジェクトは ランタイムテーマ有効 でした。
無効にしたところpaswordcharもコンボボックスのオシャレ表示も解消されました。
ありがとうございました。
> (アイコンとランタイムテーマの変更自体、グレーになってて出来ない…何故じゃ…)
この問題ですが、下記で解決しました。
http://hiderin.air-nifty.com/delphi/2007/09/index.html#entry-20862237
別ディレクトリにある、共通のリソースファイルを読み込んでいました。
アイコンの指定もどこでやってるのかわからなかったのですが
リソースに含まれてたようです。
ツイート | ![]() |