いつもお世話になります。
TColorのプロパティでclScrollBar、clBackground、clActiveCaption
clInactiveCaption、clMenu などのプロパティを一括取得しListBoxへ
格納したいのですが、どのようにすればよいのでしょうか?
どなたご教授頂けますでしょうか?
TColorはただの型名だしclScrollBarとかは定数名ですから
どちらもプロパティと呼ぶのはおかしいような……
とりあえず、標準で定義されているTColor型の定数のうち
システムカラーに相当するものの一覧がほしいのだと解釈します。
これらはただの定数であって列挙型などで定義されているわけではありませんから、
一般的にはプログラム的に取得できる一覧というものは存在しません。
一応、VCLのソースをたどってみるとこれらのシステムカラー定数は
連番になることがわかりますから、それぞれの定数の「値」を列挙することは可能です。
しかし "clScrollBar", "clMenuBar" のような「名前」がほしかったら自分で一覧を作るしかないでしょう。
ExtCtrls.pasに一覧があるからそこからパク(略)……というかTColorBoxをそのまま使うのはダメなんでしょうか?
TColorは数値なのでプロパティはありません。
色名がほしいということですよね。
こんな感じでしょうか。
//TForm1にプロシージャの宣言を追加。
private
procedure GetColorStrProc(const S: string);
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Items.Clear;
//色名取得
GetColorValues(GetColorStrProc);
end;
procedure TForm1.GetColorStrProc(const S: string);
begin
//引数に色名が渡される
ListBox1.Items.Add(S);
end;
バージョンによって違うかも。
こちらのバージョンはDelphi7です。
ちなみに、色名からTColor値への変換は、StringToColorです。
ttt様、にしの様
ご教授ありがとうございました。
以下の結果が得られました。
このGetColorValues(GetColorStrProc)で一気に色名称が得られる
なんて知りませんでした。
どうのように質問していいのか判りませんが、このようなDephiの
内部構造的な学習は何かバイブルのような書籍がいくつかあるので
しょうか?
もし、「こういう順序で読破するといいよ」という書籍があり
ましたご紹介頂きたいのですが。。。。
----------------------------------------------------------------
clBlack
clMaroon
clGreen
clOlive
clNavy
clPurple
clTeal
clGray
clSilver
clRed
clLime
clYellow
clBlue
clFuchsia
clAqua
clWhite
clMoneyGreen
clSkyBlue
clCream
clMedGray
clActiveBorder
clActiveCaption
clAppWorkSpace
clBackground
clBtnFace
clBtnHighlight
clBtnShadow
clBtnText
clCaptionText
clDefault
clGradientActiveCaption
clGradientInactiveCaption
clGrayText
clHighlight
clHighlightText
clHotLight
clInactiveBorder
clInactiveCaption
clInactiveCaptionText
clInfoBk
clInfoText
clMenu
clMenuBar
clMenuHighlight
clMenuText
clNone
clScrollBar
cl3DDkShadow
cl3DLight
clWindow
clWindowFrame
clWindowText
----------------------------------------------------------------
ツイート | ![]() |