自定义的TPropertyEditor如何把数据传回控件的Property(200分)

  • 主题发起人 主题发起人 歪就歪
  • 开始时间 开始时间

歪就歪

Unregistered / Unconfirmed
GUEST, unregistred user!
一个自制的控件,有一个属性: MyNameAgeList: TListString
在控件设计状态下,Object Inspector里点这个属性,将
出现一个自制的PropertyEdit,让用户填几项内容。这些
字符串将保存在一个TListString里。
问题是,当完成编辑后,如何把这个TStringList传回给控件的
MyNameAgeList属性呢?
弄了半天,好象是应该实现TPropertyEdit.SetValues和GetValues
方法。但不知道该如何弄。特别是GetValus的参数是个PROC的指针。
谁知道请给指点一下好么?如果有类似的代码贴出来,最好!
谢谢!
 
喂,各位,别介呀,这是怎么了?贴了半天,没回答的不说,就
一个人看呀。
是我的问题问的有问题了?各位老人家,您到是言语啊……
 
To 歪就歪:
如果你开放CoreAPI,我可以全力帮助你,因为我这方面的资料铁多?
{B-)
 
没那么麻烦吧?
一般dialog型的editor只要override两个过程就可以了. 一个是GetAttributes,
返回值里包括进paDialog. 这样object inspector中该属性右边会出现一个
按钮.
然后override Eidt过程. 读写在这里进行.
用GetOrdValue或者GetComponent(0)取值 (返回值可以认为是个指针)
用SetOrdValue将数据写回(写回一个地址).
 
Another_eYes方法能行,但是还不完整,歪就歪,考虑考虑我的条件!!! {B-)
 
Another_eYes: Hi, thanks a lot, let me check it.
沈前卫: No problem, 1400 $ + your 铁多 materials, I will public mydo
c
 
y9y:
"1400 $" and "铁多 materials",you must select only one!!!
and the same time you must upload www.gislab.ecnu.edu.cn first!!!
{B-)))
 

Hi, 沈前卫:
1. how about : 400$+"铁多 materials"? Remember, I even have no idea
of your materials.
2. I can not upload the help, as it has version control. and Ido

not want to make trouble with the owner of this BBS. But I can let
all ppldo
wnload from another site. ok?
so, deal?
 
To y9y:
I finish a component,i well fit in with your need. if select this
component,you can't select 1400 $ !!! {B-)
so,you, deal now???
 
沈前卫:
OK、OK、OK,你这个扣门鬼!
就这样,把你的铁多的资料,加上你说的那个控件EMAIL给我(天啊,有多大?
铁多,总应该有2M吧?),做为交换,我在大富翁上贴个帖子,告诉大家去哪
儿荡,行了吧?
对了,还要附加一条,如果我看不懂你的那控件(我笨),你还要负责解释。
见鬼,本来还想等穷了,再用那HELP换点钱话呢。
 
To y96:
"铁多的资料"意味作我有许多这方面得书籍,不是电子文档,没法邮给你,我这样
作是希望我们大家资源共享,何必非要200才给CoreAPI呢,就算你没分,大家还是
会回答你的问题,分高有用吗,如果你没从中学到知识,一样没用,如果大家都将
自己得口袋捂的紧紧的,那我们有何必上大富翁来讨论呢??? {B-(
控件不大,应该看得懂,不懂再留帖子???你看后可能会后悔得喔 {B-)
这个问题得200分我就不要了,叫斑竹还给你吧!!!


{
沈前卫 2000-2-11 2:29
在Dell 233MHz+Win98+Delphi4(Build5.33)下测试通过!
注意:
转贴请保持本文的完整性
}
unit MyMemo;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ScktComp,stdctrls,dsgnintf;
type
TMyListProperty=class(TClassProperty)
public
function GetAttributes:TPropertyAttributes;override;
procedure Edit;override;
end;

TMyMemo = class(TMemo)
private
{ Private declarations }
FMyList:TStringList;
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent);override;
destructor Destroy;override;
published
{ Published declarations }
property MyList:TStringList read FMyList write FMyList;
end;

procedure Register;
implementation
function TMyListProperty.GetAttributes:TPropertyAttributes;
begin
Result:=inherited GetAttributes+[paDialog]-[paSubProperties];
end;

{自己建立一个From接受输入数据,用ShowModal显示}
procedure TMyListProperty.Edit;
var
tmpMyList:TStringList;
begin
tmpMyList:=TStringList(GetOrdValue);
tmpMyList.Clear;
tmpMyList.Add('shenqw1');
tmpMyList.Add('shenqw2');
tmpMyList.Add('shenqw3');
tmpMyList.Add('shenqw4');
tmpMyList.Add('shenqw5');
ShowMessage('自己建立一个From接受输入数据,用ShowModal显示');
Designer.Modified;
end;

constructor TMyMemo.Create(AOwner: TComponent);
begin
inherited;
FMyList:=TStringList.Create;
end;

destructor TMyMemo.Destroy;
begin
FMyList.Free;
inherited;
end;

procedure Register;
begin
RegisterComponents('Samples', [TMyMemo]);
RegisterPropertyEditor(TypeInfo(TStringList),
TMyMemo,'MyList',TMyListProperty);
end;

end.

 
y9y:
是不是很失望,这么简单!!! {B-P
 
沈前卫:
1. Thanks for your component. Simply though, but very helpful.
2. 铁多的资料"意味作我有许多这方面得书籍,不是电子文档,没法邮给你"
It is ugly cheating. Even though you cheat not for yourself, it
is still a cheat.
Have a nice weekend.


 
Another_eYes: 50分别嫌少,高手出招话太少,但多谢回答问题。
沈前卫:150分别嫌多,挤的我出COREAPI,哼,掐死你的心都有!
 
后退
顶部