Delphi之TDrawGrid绘制
一直都对QQ的好友列表很好奇,最先感觉用TreeView实现的,看了看TreeView的源码,发现要实现还真的不太好完成任务啊,其中最大的原因是自己的功力不足,后来觉得用ListView来做吧,结果也是失败,后来又想到ListBox,结果发现也是难成,最后发现有一个TDrawGrid,可以来绘制,但是不知道那两行文字怎么搞,有知道的望告知,谢谢。好了不再废话,就把最近对TDrawGrid的一些操作记录如下:
1.我们先设置TDrawGrid的属性:
BorderStyle:bsNone;
ColCount:1;
DefaultColWidth:200;
DefaultRowHeight:60;
RowCount:10;
GridLineWidth:2;
Options:[goFixedVertLine, goFixedHorzLine, goHorzLine, goDrawFocusSelected, goThumbTracking];
ScrollBars:ssVertical;
2.在窗体的public 域定义如下变量和函数:
PicList: TList;
function GetPicture(ACol, ARow:Integer): TBitMap;
3.完成相关函数和过程:
function TForm1.GetPicture(ACol, ARow: Integer): TBitMap;
var
Index: integer;
begin
Result := nil;
Index := ARow * Grid.ColCount + ACol;
if Index <= PicList.Count - 1 then
Result := TBitmap(PicList.Items[Index]);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
Bmp: TBitMap;
Index: Integer;
AFileName: string;
begin
PicList := TList.Create;
for Index := 1 to 10 do
begin
AFileName := Format(ExtractFilePath(ParamStr(0)) + 'Icon\%d.bmp', [Index]);
Bmp := TBitmap.Create;
Bmp.LoadFromFile(AFileName);
PicList.Add(Bmp);
end;
end;
procedure TForm1.GridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
ACanvas: TCanvas;
R: TRect;
Bmp: TBitMap;
begin
ACanvas := Grid.Canvas;
Bmp := GetPicture(ACol, ARow);
if Bmp <> nil then
begin
R := Rect;
R.Left := R.Left + 6;
R.Top := R.Top + 6;
{如果使用Canvas的StretchDraw函数,必须加上
下面两句代码,不过BMP图片还是无法透明}
//R.Bottom := R.Bottom - 6;
//R.Right := Bmp.Width;
{设置BMP的Transparent为真,再用Canvas的
Draw函数,就可以使BMP透明绘制,不过你需要
制作透明的BMP图片}
Bmp.Transparent := True;
ACanvas.Draw(R.Left, R.Top, Bmp);
{网上有人说用下面的语句可以透明,但是使用
函数StretchDraw,还是无法透明}
//ACanvas.Brush.Style := bsClear;
//ACanvas.StretchDraw(R, Bmp);
end;
end;
最后,关于透明BMP图片的制作方法,感兴趣的可以百度一下。
http://www.lsworks.net/article/45.html
Delphi之TDrawGrid绘制的更多相关文章
- Delphi实例之绘制正弦函数图像
Delphi实例之绘制正弦函数图像 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphic ...
- delphi DBgrid应用大全
Delphi 语言的数据库编程中,DBGrid 是显示数据的主要手段之一.但是 DBGrid 缺省的外观未免显得单调和缺乏创意.其实,我们完全可以在我们的程序中通过编程来达到美化DBGrid 外观的目 ...
- 借鉴 学习 DELPHI 通用函数 哈哈
[转]关于Delphi通用涵数 http://m.blog.csdn.net/blog/dragonjiang5460/1196927 2006-9-8阅读2016 评论0 DELPHI程序注册码设计 ...
- DBGrid 各属性的设置
在 Delphi 语言的数据库编程中,DBGrid 是显示数据的主要手段之一.但是 DBGrid 缺省的外观未免显得单调和缺乏创意.其实,我们完全可以在我们的程序中通过编程来达到美化DBGrid 外观 ...
- DBGrid和DBGridEH
二.应用实例 Enlib3.0组件包安装成功后 A.定制标题行 1.制作复杂标题行 标题行可设为2行以上高度,并可以为多列创建一个共同的父标题行.为实现这个效果,需在各个列标题属性中以“|”分隔父标题 ...
- 主窗体里面打开子窗体&&打印饼图《Delphi 6数据库开发典型实例》--图表的绘制
\Delphi 6数据库开发典型实例\图表的绘制 1.在主窗体里面打开子窗体:ShowForm(Tfrm_Print); procedure Tfrm_Main.ShowForm(AFormClass ...
- WM_ERASEBKGND官方解释(翻译),以及Delphi里所有的使用情况(就是绘制窗口控件背景色,并阻止进一步传递消息)
#define WM_ERASEBKGND 0x0014 Parameters wParam A handle to the device context. // ...
- Delphi中有关窗口绘制
Invalidate方法通知Windows应该重新绘制表单的整个表面.最重要的是Invalidate不会立即强制执行绘制操作. Windows只是存储请求,并且只会响应它当前程序完全执行后,并且只要系 ...
- Delphi如何在Form的标题栏绘制自定义文字
Delphi中Form窗体的标题被设计成绘制在系统菜单的旁边,如果你想要在标题栏绘制自定义文本又不想改变Caption属性,你需要处理特定的Windows消息:WM_NCPAINT.. WM_NCPA ...
随机推荐
- CentOS下安装Nginx并添加nginx_upload_module
安装前,最好能保证依赖的系统软件已经升级. yum update CentOS上安装Nginx,如果只是简单安装,不附加其他第三方模块,一句话可以搞定: yum install nginx ...
- GDAL库——读取图像并提取基本信息
GDAL库是一个跨平台的栅格地理数据格式库,包括读取.写入.转换.处理各种栅格数据格式(有些特定的格式对一些操作如写入等不支持).它使用了一个单一的抽象数据模型就支持了大多数的栅格数据.这里有GDAL ...
- Oracle EBS-SQL (QA-1):检查超出检验周期的检验数据.sql
select msi.segment1 物料编码, msi.DESCRIPTION ...
- WPF中动态更新TextBlock文字中的超链接,文本
1.------------------------------------------------------------------------- 修改超链接的文本文字: <TextBloc ...
- linux之SQL语句简明教程---DISTINCT
SELECT 指令让我们能够读取表格中一个或数个栏位的所有资料.这将把所有的资料都抓出,无论资料值有无重复.在资料处理中,我们会经常碰到需要找出表格内的不同资料值的情况.换句话说,我们需要知道这个表格 ...
- poj 1742 coins_多重背包
题意:给你N个种硬币,价值和数量,知道手表不大于m,问能组成(1~m)的价格有多少种情况 套套上次那题的模板直接就行了,http://blog.csdn.net/neng18/article/deta ...
- C#打印条码BarTender SDK打印之路和离开之路(web平凡之路)
从来没想过自己会写一篇博客,鉴于这次从未知的探索到一个个难点的攻破再到顺利打印,很想记录这些点滴,让后人少走弯路. 下面走进正题. 需求:取数据库里的相应的字段数据,并生成条形码,可以批量.单条打印. ...
- hdu 4496 D-City(并查集)
Problem Description Luxer is a really bad guy. He destroys everything he met. One day Luxer went to ...
- Js节点属性与方法
属性: Attributes 存储节点的属性列表(只读) childNodes 存储节点的子节点列表(只读) dataType 返回此节点的数据类型 Definition 以D ...
- OC基础10:基本的C语言特性1
"OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1. 函数和方法的区别? (1).方法包 ...