お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"[+]とか[-]がついたアイコン"

この発言に対し以下のコメントが寄せられています
#01391 アイクビー さん RE:[+]とか[-]がついたアイコン
#01392 アイクビー さん RE:[+]とか[-]がついたアイコン

TTreeViewでノードをドラッグする時、Shift を押すと [-] が、Ctrl を押すと [+] がくっつくようにしたかったので、とりあえずそういうアイコンを作る方法 を考えてみました。リソースとかよくわからないので、解放のしかたが大丈夫が 不安ですが、なんとか動いているようです。 白黒の場合は、TIconInfo.hbmMask の下半分をいじると、[+] や [-] を不透明 にできるようです。カラーの場合は TIconInfo.hbmColor をいじるとできるよう にみえるんですが、うまくいかないし、透明でも困らないので、そのままにして ます。 procedure TForm1.FormCreate(Sender: TObject); var fI: TIconInfo; hI: HICON; fB: TBitmap; iW: Integer; iH: Integer; begin if not GetIconInfo(Screen.Cursors[crDefault], fI) then begin raise Exception.Create(SysErrorMessage(GetLastError())); end; try fB := TBitmap.Create(); try iW := GetSystemMetrics(SM_CXCURSOR); iH := GetSystemMetrics(SM_CYCURSOR); fB.Handle := fI.hbmMask; with fB.Canvas do begin Rectangle(Trunc((iW * 21) / 32), Trunc((iH * 21) / 32), iW, iH); MoveTo(Trunc((iW * 23) / 32), Trunc((iH * 26) / 32)); LineTo(Trunc((iW * 29) / 32) + 1, Trunc((iH * 26) / 32)); end; Show(); // これをしないと、なぜかうまくいきません。(笑) hI := CreateIconIndirect(fI); if (hI = 0) then begin raise Exception.Create(SysErrorMessage(GetLastError())); end; Screen.Cursors[1] := hI; Hide(); // これをしないと、なぜかうまくいきません。 with fB.Canvas do begin MoveTo(Trunc((iW * 26) / 32), Trunc((iH * 23) / 32)); LineTo(Trunc((iW * 26) / 32), Trunc((iH * 29) / 32) + 1); end; Show(); // これをしないと、なぜかうまくいきません。 hI := CreateIconIndirect(fI); if (hI = 0) then begin raise Exception.Create(SysErrorMessage(GetLastError())); end; Screen.Cursors[2] := hI; finally fB.Free(); end; finally DeleteObject(fI.hbmMask); if not (fI.hbmColor = 0) then begin DeleteObject(fI.hbmColor); end; end; end; procedure TForm1.SpeedButton1Click(Sender: TObject); begin if (Screen.Cursor = 1) then begin Screen.Cursor := 2; end else begin Screen.Cursor := 1; end; end; アイクビー  - FDELPHI MES(16):玉石混淆みんなで作るSample蔵【見本蓄積】 01/10/08 - Original document by アイクビー 氏 ID:(KHB01350)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum