我对控件写法不熟,哪位能帮我建个类? (申明如下) (200分)

  • 主题发起人 主题发起人 小生
  • 开始时间 开始时间

小生

Unregistered / Unconfirmed
GUEST, unregistred user!
我对控件写法不熟,哪位能帮我建个类? (申明如下)
type
TNode=class
private
FUserEvent:TUserEvent;
procedure SetUserEvent(......);

protected

public
constructor Create;
destructor Destroy;
property UserEvent:TUserEvent read FUserEvent write SetUserEvent;

end;
////////////////////////////////
type TUserEvent=class

UserEvent[0]
EventName string
EventValue integer

UserEvent[1]
EventName string
EventValue integer

UserEvent[2]
EventName string
EventValue integer
.......
 
你上半部分写的基本上正确,但下半部定义的类型我就看不明白是什么了。
////////////////////////////////
type TUserEvent=class

UserEvent[0]
EventName string
EventValue integer

UserEvent[1]
EventName string
EventValue integer

UserEvent[2]
EventName string
EventValue integer
这是个什么东西呀,像类还不是类,像记录也不是记录。你想实现什么呀?
 
你可以参考其他控件的源码来写自己的控件,其实Delphi中控件就写得十分好,比如TButton,可以参考
 
TO 桦树皮,下半部分是要写的,就是 TUserEvent 要类似 于 TList 可以增加 删除
 
这样写: 其中代码不一定十分准确,但思想绝对可用
type
ItemRec = record
ItemName: string;
ItemValue: integer
end;

TUserEvent=class
private
FItemList: TList;
function GetItem(Index: integer): ItemRec;
procedure SetItem(Index: integer;AItem: ItemRec);
protected
public
constructor Create; override;
destructor Destroy; override;
property Items[Index: integer]: ItemRec read GetItem write SetItem;
end;

创建时同时创建List, 释放时释放List
function GetItem(Index: integer): ItemRec;
begin
Result := nil;
if Index < FItemList.Count - 1 then
Result := ItemRec(FItemList[Index]);
end;

procedure SetItem(Index: integer;AItem: ItemRec);
begin
if Index < FItemList.Count then
begin
{应该先释放原来纪录的内存}
FItemList[INdex] = AItem;
end;
if Index = FItemList.Count then
begin
FItemList.Add(AItem); {追加}
end;
if Index > FItemList.Count then
begin
for i := FItemList.Count to Index - 1 do
FItemList.Add(nil); {追加空}
FItemList.Add(ItemRec); {追加}
end;
end;
 
接受答案了.
 
后退
顶部