お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





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

"RE^3:標準的なボタン画像を得るコンポーネ"

この発言は
#01220 ぜえた さんのRE^2:標準的なボタン画像を得るコンポーネ
に対するコメントです

 こんにちは、ぜえた です。 ToolBarを CoolBarにのせて使うなら、ToolBarを複数にすることが簡単にでき るので、複数のイメージリストを使う方がよいかも。そのほうがバージョンが 上がってイメージが増えるとい事態に万一なっても対応できるし。 ImageCategoryプロパティでイメージのカテゴリー、ImageSizeでイメージの大 小を設定します。 動作確認は Win98, NT4上での D3でです。 相変わらずエラー処理を記述していません(^^; unit CommImg; interface uses Windows, SysUtils, Classes, Controls, CommCtrl; type TImageCategory = (icStandard, icView, icHistory); TImageSize = (isSmall, isLarge); TCommImageList = class(TImageList) private FImageCategory: TImageCategory; FImageSize: TImageSize; procedure SetImageCategory(Value: TImageCategory); procedure SetImageSize(Value: TImageSize); protected procedure DefineProperties(Filer: TFiler); override; procedure LoadImage; procedure Update; virtual; public constructor Create(AOwner: TComponent); override; published property ImageCategory: TImageCategory read FImageCategory write SetImageCategory; property ImageSize: TImageSize read FImageSize write SetImageSize; end; procedure Register; implementation { TCommImageList } const ImageWidth: array[TImageSize] of Integer = (16, 24); ImageID: array[TImageCategory, TImageSize] of UINT = ( (IDB_STD_SMALL_COLOR, IDB_STD_LARGE_COLOR), (IDB_VIEW_SMALL_COLOR, IDB_VIEW_LARGE_COLOR), (IDB_HIST_SMALL_COLOR, IDB_HIST_LARGE_COLOR)); constructor TCommImageList.Create(AOwner: TComponent); //override; begin inherited Create(AOwner); Update; end; procedure TCommImageList.DefineProperties(Filer: TFiler); //override; begin Clear; try inherited DefineProperties(Filer); finally Update; end; end; procedure TCommImageList.LoadImage; var hwndTB: HWND; tbab: TTBAddBitmap; begin hwndTB := CreateWindowEx(0, TOOLBARCLASSNAME, nil, 0, 0, 0, 0, 0, 0, 0, HInstance, nil); try SendMessage(hwndTB, TB_BUTTONSTRUCTSIZE, SizeOf(TTBButton), 0); SendMessage(hwndTB, TB_SETIMAGELIST, 0, LPARAM(Handle)); tbab.hInst := HINST_COMMCTRL; tbab.nID := ImageID[FImageCategory, FImageSize]; SendMessage(hwndTB, TB_ADDBITMAP, 0, LPARAM(@tbab)); SendMessage(hwndTB, TB_SETIMAGELIST, 0, 0); finally DestroyWindow(hwndTB); end; end; procedure TCommImageList.SetImageCategory(Value: TImageCategory); begin if Value = FImageCategory then Exit; FImageCategory := Value; Update; end; procedure TCommImageList.SetImageSize(Value: TImageSize); begin if Value = FImageSize then Exit; FImageSize := Value; Update; end; procedure TCommImageList.Update; //virtual; begin Clear; Width := ImageWidth[FImageSize]; Height := ImageWidth[FImageSize]; LoadImage; Change; end; procedure Register; begin RegisterComponents('Samples', [TCommImageList]); end; end. ぜえた (QZC05100)  - FDELPHI MES(16):玉石混淆みんなで作るSample蔵【見本蓄積】 01/01/03 - Original document by ぜえた 氏 ID:(QZC05100)



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

Copyright 1996-2002 Delphi Users' Forum