我是个新手,怎么把已经实现功能的PAS做成控件?分太少,全给了(50分)

  • 主题发起人 主题发起人 ztaif
  • 开始时间 开始时间
Z

ztaif

Unregistered / Unconfirmed
GUEST, unregistred user!
我已经把有关DBGrid我要增强的功能在练习的单元中做好了,但我不会把它做成控件,
怎么办呀,还有没有人在线上,帮帮忙呀,

偶分只剩这一点了,全给了,等偶过一段时间分来了,偶再全部给您们加上,偶不要分

偶需要您们各位指导一下,好急呀,求救拉
 
在线在大哥们帮帮小弟呀这个问题好菜,你们就教一下呀!呜~~~~~~~~~~[:(]
 
可以呀!你先New一个Component,从TDBGrid继承...
 
Install到某个Package或者是新建一个Package;
 
然后把你加的功能加到你的源码里面
 
compile,就好了
 
比如说我要在DrawColumnCell上做一些增强的功能,怎么做呢,教教吧,偶要哭了,

呜,偶做的不起任何作用,笨死了呜~~~~~~~~~~~

大哥能不能教一教,你就用最简单的在这个事件上给我SHOWMESSAGE一下偶看看也许就明白了
 
wait for a while, let me try
 
大哥帮帮忙呀我在等着呢,不管怎么样,偶一定把分给你加上,以后有分了偶也加给你,

呜~~~~~~~~~~~~~~ 明天一定得搞定, 这些加强的功能偶做了几天做出来了,可是要做成
控件偶搞不通了,帮帮呀
 
谢拉~~~ 哥哥~~~ 
呜~~~~~, 
 
哥哥,我先把分给你加上
 
坏拉,到已答问题里拉,你是不是看不到拉
 
首先File/New/Others,选component。出来对话框。
选择从TDBGrid继承,新的空间名字叫TMyDBGrid (for example)
Palette Page : sample,表示你的空件注册到哪个页面上
Unit File: 新的控件源码文件名,注意路径
点Install,选择已有的一个package或者新建一个package,OK
问你要不要rebuild,yes.告诉你你的新控件已经注册。
当然现在的新控件没有加任何功能。
to be continued...
 
观察DBGrids单元内的源码,发现原本的定义是:
procedure DrawDataCell(const Rect: TRect; Field: TField;
State: TGridDrawState); dynamic;
既然是动态的,那就可以重载。于是写新代码,添加一个函数:
unit MyDBGrid;

interface

uses
SysUtils, Classes, Controls, Grids, DBGrids, Types;

type
TMyDBGrid = class(TDBGrid)
private
{ Private declarations }
protected
procedure DrawColumnCell(const Rect: TRect; DataCol: Integer;
Column: TColumn; State: TGridDrawState); override;//这里,注意要override
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
end;

procedure Register;

implementation

uses Graphics;
procedure Register;
begin
RegisterComponents('Samples', [TMyDBGrid]);
end;

//对应的函数体:
procedure TMyDBGrid.DrawColumnCell(const Rect: TRect; DataCol: Integer;
Column: TColumn; State: TGridDrawState);
begin
Canvas.Brush.Color:=clRed;
Canvas.FillRect(Rect);//把整个cell涂成红色。you can do your own operations here
inherited;
//这句话表示调用父类里面的DrawColumnCell。多数重载的函数都会在最先或最后调用
//父类里面的对应函数,因为父类里的函数可能会提供一些你需要的操作。当然,如果
//你觉得你的操作已经足够,也可以不要掉用父类里的函数。看需要而定。
end;

end.

因为TRect没有定义,add uses Types;因为clRed没有定义,add uses graphic.
Done
 
后退
顶部