如何以TComboBox为基础加上新的属性制作一个新的控件,最好能给出代码,谢谢

tianjin 2006-04-24 08:29:47
我想在TComboBox上加上一个TStringList来对应每一条Item.Add Delete Clear 时自动增减
...全文
146 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wudi_1982 2006-04-24
  • 打赏
  • 举报
回复
一个简单的例子,从TBUTTON中继承,添加了一些内容的控件,很简单,自己看把。
unit WDButton;

interface

uses
SysUtils, Classes, Controls, Buttons;

type
TWDButton = class(TSpeedButton)
private
FSh : integer;
FQyh : integer;
protected

public
procedure SetSh(value : integer);
function GetSh : integer;
procedure SetQyh(value : integer);
function GetQyh : integer;
constructor Create(AOwner : TComponent);override;
destructor Destroy;override;
published
end;

procedure Register;

implementation

constructor TWDButton.Create(AOwner : TComponent);
begin
inherited;

end;

destructor TWDButton.Destroy;
begin
inherited;
end;


procedure Register;
begin
RegisterComponents('Samples', [TWDButton]);
end;


procedure TWDButton.Setsh(value : integer);
begin
fsh := value;
end;

procedure TWDButton.SetQyh(value : integer);
begin
FQyh := value;
end;

function TWDButton.GetSh: integer;
begin
Result := fSh;

end;

function TWDButton.GetQyh: integer;
begin
Result := fQyh;
end;



end.
bluesky23 2006-04-24
  • 打赏
  • 举报
回复
//以下是一位网友写的继承TTreeView类的一个实例,支持多选框功能,楼主可以参考一下。
unit UnitCheckTreeview;

interface

uses
Windows,Messages,SysUtils,Classes,Controls,Commctrl,ComCtrls;

const
TVIS_CHECKED=$2000;
type
TCheckTreeview=class(TTreeView)
private
{Privatedeclarations}
protected
{Protecteddeclarations}
procedure CreateParams(var Params: TCreateParams); override;
public
{Publicdeclarations}
function IsChecked(Node: TTreeNode): Boolean;
procedure SetChecked(Node: TTreeNode; Checked: Boolean);

procedure SetAllChecked(Checked: Boolean); //added by Dingrj 2006-03-08
//procedure SetAllUnChecked(Node: TTreeNode; Checked: Boolean);
published
{Publisheddeclarations}
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Standard',[TCheckTreeview]);
end;

{TCheckTreeview}

procedure TCheckTreeview.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style := Params.Style or TVS_CHECKBOXES;
end;

function TCheckTreeview.IsChecked(Node: TTreeNode):Boolean;
var
TvItem: TTVItem;
begin
TvItem.Mask := TVIF_STATE;
TvItem.hItem := Node.ItemId;
TreeView_GetItem(Node.TreeView.Handle,TvItem);
Result := (TvItem.State and TVIS_CHECKED) = TVIS_CHECKED;
end;

procedure TCheckTreeview.SetAllChecked( Checked: Boolean);
var
i:Integer;
begin
for i:=0 to Self.Items.Count -1 do
SetChecked(Self.Items[i],Checked);

end;


procedure TCheckTreeview.SetChecked(Node: TTreeNode; Checked: Boolean);
var
TvItem: TTVItem;
begin
FillChar(TvItem,SizeOf(TvItem),0);
with TvItem do
begin
hItem := Node.ItemId;
Mask := TVIF_STATE;
StateMask := TVIS_STATEIMAGEMASK;
if Checked then
TvItem.State := TVIS_CHECKED
else
TvItem.State := TVIS_CHECKED shr 1;
TreeView_SetItem(Node.TreeView.Handle,TvItem);
end;
end;
bluesky23 2006-04-24
  • 打赏
  • 举报
回复
继承 TComboBox这个类,再自己加些属性和方法即可。
tianjin 2006-04-24
  • 打赏
  • 举报
回复
还有就是也想学习控件如何制作
tianjin 2006-04-24
  • 打赏
  • 举报
回复
items只显示出需要的内容,我后面可能会跟多个TStringList
lwk_hlj 2006-04-24
  • 打赏
  • 举报
回复
根本没有必要这样做吧?

你无非是想加些其它内容,在items完全可以达你你要的效果

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧