一个在Panel上显示图标的控件
来源:互联网 发布:apache无法访问子目录 编辑:程序博客网 时间:2024/04/27 23:39
//原来要
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,Forms,
Dialogs, StdCtrls, ExtCtrls,Printers, Buttons,Contnrs,
ElementClass,TypInfo,IniFiles,ImgList;
Type
TLedPanelEx = class(TPanel)
private
FBitMap:TBitmap;
FImageChangeLink: TChangeLink;
FImages: TCustomImageList;
FLedIndex: Integer;
procedure SetImages(const Value:TCustomImageList);
procedure ImageListChange(Sender: TObject);
procedure SetLedIndex(const Value: Integer);
protected
procedure Paint; override;
function CanAutoSize(var NewWidth, NewHeight:Integer): Boolean; override;
public
constructor Create(AOwner: TComponent);override;
destructor Destroy; override;
published
property Images: TCustomImageList read FImageswrite SetImages;
property LedIndex:Integer Read FLedIndex WriteSetLedIndex;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Standard', [TLedPanelEx]);
end;
{ TLedPanelEx }
function TLedPanelEx.CanAutoSize(varNewWidth,
NewHeight: Integer): Boolean;
begin
//如果设置了自动大小后则大小只能是当前显示的图标大小
if AutoSize and Assigned(FImages) then
begin
NewWidth:=FImages .Width ;
NewHeight:=FImages .Height;
end;
end;
constructor TLedPanelEx.Create(AOwner:TComponent);
begin
inherited;
FImageChangeLink := TChangeLink.Create;
FImageChangeLink.OnChange := ImageListChange;
FBitMap:=TBitmap .Create;
end;
destructor TLedPanelEx.Destroy;
begin
FBitMap.Free;
FImageChangeLink.Free;
inherited;
end;
procedureTLedPanelEx.ImageListChange(Sender: TObject);
begin
if Sender = Images then Refresh ;
end;
procedure TLedPanelEx.Paint;
begin
inherited;
if Assigned (Images) then
begin
Canvas .CopyMode:=cmWhiteness;
if Images.GetBitmap(FLedIndex,FBitMap) then
Canvas .BrushCopy(Rect(0,0,Images.Width,Images .Height),FBitMap ,Rect(0,0,Images .Width,Images
.Height),clWhite);
end;
end;
procedure TLedPanelEx.SetImages(constValue: TCustomImageList);
begin
//指定一个图标列表
if Images <> nil then Images.UnRegisterChanges(FImageChangeLink);
FImages := Value;
if Images <> nil then
begin
Images.RegisterChanges(FImageChangeLink);
Images.FreeNotification(Self);
end;
Refresh ;
end;
procedure TLedPanelEx.SetLedIndex(constValue: Integer);
begin
//设置显示的图标索引
FLedIndex := Value;
Refresh ;
end;
end.
{
Canvas .BrushCopy(Rect(0,0,Images.Width,Images .Height),FBitMap ,Rect(0,0,Images .Width,Images
.Height),clWhite);
用来透明显示图片,可是如果遇到图中间有白色的地方也会透明,有没有更好的办法??
}
- 一个在Panel上显示图标的控件
- 如何动态的在panel中显示控件
- 在FLEX Panel的Title上添加控件实例
- 在FLEX Panel的Title上添加控件实例
- 删除gnome-panel上的图标
- C#在一个控件上显示电脑当前的时间
- Qt 在布局好的界面上显示一个控件
- 在一个panel中显示新的form
- 用 PictureVal 直接在 Image 控件上显示系统默认文件类型的图标
- 如何让一个Form显示在另外一个Form上的一个控件上
- 将图片显示在一个控件上
- iOS如何在一个图标上加上气泡,显示数字
- 在Panel中显示一个窗体
- 让服务器端的Panel 在客户端动态地显示在某个控件的下面
- 遍历Panel组件上的所有控件:
- 一个子控件在父控件上不显示的几个大概原因
- 在按钮控件上加载背景为透明的图标
- 修改表单(form)在菜单上的显示图标
- ISA 2004 介绍
- Report: Google gets 1,000 resumes for 50 jobs in China
- 让Microsoft Visual Studio 2005英文RC版变成简体中文RTM版
- Easy Code 1.00.0.0033
- 基于Tiles框架Struts框架的UI设计—几种组织HTML和JSP视图组件(转)
- 一个在Panel上显示图标的控件
- Visual Studio 2005 Team System ISO DVD
- 用竞赛式助学金去捐助贫困地区的学生
- 支持access的sql语句分页,速度特快!!!
- WIN2000上网时标题栏的字体会越变越小解决方案。
- 网络游戏 贸易时代的总结(一)--总体设计和登陆服务器
- VC实现BMP位图文件结构及平滑缩放
- 将ASP纪录集输出成n列的的表格形式显示的方法
- ASP.NET程序中常用代码汇总------1