喫茶XRAYトップページ

[スレッド全体
]

[5245] Re:plExplorerFolderTreeの背景とFontの色返信 削除
2011/9/14 (水) 10:56:20 Mr.XRAY
▼ Saraさん。ゴメンなさい。今コードをみたら、

> 背景色を変更する方法はございますでしょうか?
> (あと、Fontの色も・・・)


未確認ですが、背景は、

function TplExplorerFolderTree.PrePaint(hdc: HDC; var prc: TRect;
  var plres: LRESULT): HRESULT;

のHDCに描画すれば出来るかも知れません。多分TRectが背景のRectじゃ
ないかと思います。Fontの色の方は、

function TplExplorerFolderTree.ItemPrePaint(hdc: HDC; var prc: TRect;
  var pnstccdItem: TNSTCCustomDraw; var pclrText, pclrTextBk: COLORREF;
  var plres: LRESULT): HRESULT;
var
  pShellItem      : IShellItem;
  pShellItemArray : IShellItemArray;
  pidl            : PItemIDList;
  pFullPath       : array [0..MAX_PATH - 1] of Char;
begin
  if (pnstccdItem.uItemState and CDIS_FOCUS) > 0 then begin
    pclrText := RGB(200, 0, 0);
    plres    := CDRF_NEWFONT;
  end;

ここでは、CDIS_FOCUSの時に色をRGBで設定していますから、それ以外のを
設定すれば可能かも知れません。
ダメだったらゴメンなさい。
うまくいくようでしたら、プロパティに追加しますか…

[5246] Re2:plExplorerFolderTreeの背景とFontの色返信 削除
2011/9/14 (水) 11:06:59 Mr.XRAY
考えてみれば、このTplExplorerFolderTree、TPanelに描画していますが、
直接親のコントロールに表示すればいいんですよね。
う〜ん、バグというより誤字脱字の類ですね。これは。

インターフェイスには直接表示のコントロールがない
      ↓
それじゃ、TPanel使おう

思いこみは怖い。自分自身にあきれました。
またまたSaraさんの発言で気づかされました。
もしかしてSaraさんって、知っていてわざと私を突いていのかしらん(笑)

他にもこんなサンプルコードがいっぱいあるんだろうな。ふぅ(ため息)

[5247] Re3:plExplorerFolderTreeの背景とFontの色返信 削除
2011/9/14 (水) 21:03:22 Sara
▼ Mr.XRAYさん

> 思いこみは怖い。自分自身にあきれました。
> またまたSaraさんの発言で気づかされました。
> もしかしてSaraさんって、知っていてわざと私を突いていのかしらん(笑)

いえいえ、まったく 深く考えていません(^^;
自分のやりたいことだけを素直に質問しているだけです(爆)

ソースを見て自分の手に負えそうであれば、いじり倒すんですが・・・
不明なコードが多いと、その気力が・・・でてこない・・・(^^;
んで、質問すると・・・完全な回答が得られなくてもヒントがあれば・・・
また、いじり倒す・・・でも、できないと、やっぱり質問・・・(^^;

そんな感じです(^^;;

[5255] Re3:plExplorerFolderTreeの背景とFontの色返信 削除
2011/9/15 (木) 23:25:30 Mr.XRAY
> それじゃ、TPanel使おう

間違えました.TCustomPanelですね.


[5256] Re4:plExplorerFolderTreeの背景とFontの色返信 削除
2011/9/16 (金) 15:47:52 Sara
▼ Mr.XRAYさん

ありがとうございます。m(_ _)m が、最近サボっていてDelphiいじってません・・・(^^;

今日、帰ったら実装してみます。

そういえば、同じプロジェクトを複製して、Delphi XEとXE2でそれぞれ実行ファイルを
作成出来るようにしてある場合、XE2でテーマを変更すると、XEで作ったPGもそのテーマの
影響を受けるんですね(@_@)
詳しくは調べていませんが、プロセス名か何かが判断の基準なのかな・・・

[5257] Re5:plExplorerFolderTreeの背景とFontの色返信 削除
2011/9/16 (金) 22:41:40 Sara
▼ Mr.XRAYさん

plExplorerFolderTreeの背景色とFont色が無事変更できました。(^^)V

ですが・・・(^^;

AquaGraphite等のGraphiteと付くスタイルの背景色は、RGB(17,17,17)なのですが、
ほぼ黒に近いため、階層のあるフォルダの三角マークが見えなくなります・・・
(マウスオーバーさせると、色が変わるので見える・・・)

これを変えるには・・・やっぱり、Shellのイメージリストを取得して、部分的に
入れ替えて、それを戻してやる的なことをしないとだめですかね・・・(^^;



[5258] Re6:plExplorerFolderTreeの背景とFontの色返信 削除
2011/9/17 (土) 11:47:22 Mr.XRAY
▼ Saraさん

> AquaGraphite等のGraphiteと付くスタイルの背景色は、RGB(17,17,17)なのですが、
> ほぼ黒に近いため、階層のあるフォルダの三角マークが見えなくなります・・・
> (マウスオーバーさせると、色が変わるので見える・・・)


ハハハッ。これはやっぱり、マイクロソフトの言いなりになるしかないですね。

>XE2でテーマを変更すると、XEで作ったPGもそのテーマの
>影響を受けるんですね(@_@)


マニフェストファイル使っていますから。
必要最小限のファイルにしてからコンパイルすると消えるでしょう。

http://mrxray.on.coocan.jp/Delphi/Info/OtherInfo_General.htm#fig3


[5259] Re7:plExplorerFolderTreeの背景とFontの色返信 削除
2011/9/17 (土) 13:55:40 Sara
▼ Mr.XRAYさん

> ハハハッ。これはやっぱり、マイクロソフトの言いなりになるしかないですね。
やはり、List系の背景は白で統一したほうが、簡単かな・・・(^^;

> >XE2でテーマを変更すると、XEで作ったPGもそのテーマの
> >影響を受けるんですね(@_@)
>
> マニフェストファイル使っていますから。
> 必要最小限のファイルにしてからコンパイルすると消えるでしょう。
>
> http://mrxray.on.coocan.jp/Delphi/Info/OtherInfo_General.htm#fig3


ん? XE用のプロジェクトと、XE2用のプロジェクトは全く別なフォルダーに
なっているのですが、それぞれのフォルダーにできたEXEを実行すると、
XE側でもXE2側で設定したスタイルが使われて表示されるんですが・・・

XE2側のマニフェストファイルをXE側にコピーしているわけではないし・・・

なんか、私の言っていること可笑しいです?(^^; (もしくは、気のせい?)

[5260] Re8:plExplorerFolderTreeの背景とFontの色返信 削除
2011/9/17 (土) 15:00:56 Mr.XRAY
▼ Saraさん

> やはり、List系の背景は白で統一したほうが、簡単かな・・・(^^;

うんだ.うんだ (^^;

> ん? XE用のプロジェクトと、XE2用のプロジェクトは全く別なフォルダーに

えっ!? どぼちて….何でそうなんでしょう.リソースに含まれているとか...
じゃなくて... わかりませ〜ん.

[5261] Re9:plExplorerFolderTreeの背景とFontの色返信 削除
2011/9/17 (土) 21:20:11 Sara
▼ Mr.XRAYさん

> > やはり、List系の背景は白で統一したほうが、簡単かな・・・(^^;
>
> うんだ.うんだ (^^;


ところで、背景色や、Fontの色が変えられるようになると、ついでに
plExplorerFolderTreeで表示されるスクロールバーもスタイルと統一
できないかという欲がでてくるんですが、なんとかなりますか?(^^;




[5262] Re10:plExplorerFolderTreeの背景とFontの色返信 削除
2011/9/17 (土) 22:42:31 Mr.XRAY
▼ Saraさん

> ところで、背景色や、Fontの色が変えられるようになると、ついでに
> plExplorerFolderTreeで表示されるスクロールバーもスタイルと統一
> できないかという欲がでてくるんですが、なんとかなりますか?(^^;


気持ちは理解できます。
だって、だからこそ、Windows XP以降テーマが採用され、Delphiでも可能に
なったのですから。
う〜ん、どうでしょう。あのインターフェイスを使用したコードでは無理が
あるかも知れません。

[5265] Re11:plExplorerFolderTreeの背景とFontの色返信 削除
2011/9/18 (日) 01:08:03 Sara
▼ Mr.XRAYさん

> > plExplorerFolderTreeで表示されるスクロールバーもスタイルと統一
> > できないかという欲がでてくるんですが、なんとかなりますか?(^^;
>
> 気持ちは理解できます。


そうですよね!(笑)

と、いうわけで(不明)、TplContextMenuもTPopupActionBarのように
スタイル変更に同期されると、(平和のためよ)みんなが幸せになれるかもしれない・・・
(古い・・・いぜんに知らないか・・・)


[5266] Re12:plExplorerFolderTreeの背景とFontの色返信 削除
2011/9/18 (日) 12:48:41 Mr.XRAY
▼ Saraさん
> 平和のためよ)みんなが幸せになれるかもしれない・・・
> (古い・・・いぜんに知らないか・・・)


確かに、最近みかけないフレーズですね。でもいいフレーズだと思います。
時代は変化しているんですね(実感…)。

[5250] Re2:plExplorerFolderTreeの背景とFontの色返信 削除
2011/9/15 (木) 00:11:04 Mr.XRAY
確認してみました

> ここでは、CDIS_FOCUSの時に色をRGBで設定していますから、それ以外のを
> 設定すれば可能かも知れません。
> ダメだったらゴメンなさい。


とりあえず可能なようです。以下のコードでテストしました。
Windows 7 U64 + Delphi 2010

--------------- ItemPrePaintイベント -----------------------------
//  pclrTextBkが文字列の背景色の設定
//  選択中の文字列の背景色は常にシステム規定値らしい

function TplExplorerFolderTree.ItemPrePaint(hdc: HDC; var prc: TRect;
  var pnstccdItem: TNSTCCustomDraw; var pclrText, pclrTextBk: COLORREF;
  var plres: LRESULT): HRESULT;
var
  pShellItem      : IShellItem;
  pShellItemArray : IShellItemArray;
  pidl            : PItemIDList;
  pFullPath       : array [0..MAX_PATH - 1] of Char;
begin
  pclrTextBk := clYellow;  //この色を背景色と同じにする
  if (pnstccdItem.uItemState and CDIS_FOCUS) > 0 then begin
    pclrText   := clBlue;
    plres      := CDRF_NEWFONT;
  end else begin
    pclrText   := clRed;
  end;
 
  以下略

--------------- PrePaintイベント -----------------------------

function TplExplorerFolderTree.PrePaint(hdc: HDC; var prc: TRect;
  var plres: LRESULT): HRESULT;
var
  LogBrush :TLogBrush;
  hbr : HBRUSH;
begin
  LogBrush.lbStyle := BS_SOLID;
  LogBrush.lbColor := clYellow;  //これを文字例の背景色と同じにする
  LogBrush.lbHatch := 0;

  hbr := CreateBrushIndirect(LogBrush);
  FillRect(hdc, prc, hbr);
  SetBkColor(hdc, TRANSPARENT);  //これはいらなないかも知れない
  plres  := CDRF_NOTIFYITEMDRAW;
  Result := S_OK;
end;

図は上記コードの場合の結果です。



[▼次のスレッド]
INCM/CMT
Cyclamen v3.82