想在form1中调用form2中自定数组(字符串数组)属性。请各位大侠指点(100分)

  • 主题发起人 主题发起人 jianguobu
  • 开始时间 开始时间
J

jianguobu

Unregistered / Unconfirmed
GUEST, unregistred user!
想在form1中调用form2中自定数组(字符串数组)属性。
在form2的private中
function GetProjectNo(Index : Integer): String;
procedure SetProjectNo(Index:Integer; ProjectNo:String);
在form2的public中
property ProjectNo[Name:Integer] : String Read GetProjectNo Write SetProjectNo;
这样做是否对,如果对的话,那GetProjectNo中如何获得某一元素的值,SetProjectNo中如何设置某一元素的值,在form1中如何调用。请指教,非常谢谢!
 
不肯赐教吗?
 
简单举个例子:
在Form2中
private
FProjectNo:Array [0..4] of String;
.......
function TForm2.GetProjectNo(Index:Integer):String;
begin
Result:=FProjectNo[Index];
end;
procedure TForm2.SetProjectNo(Index:Integer;Value:String);
begin
FProjectNo[Index]:=Value;
end;

Form1的单元中引用Form2的单元,直接用
Form2.ProjectNo[1]:='Yes!';
就可以了。
 
你的写法让人感到好难受。
 
???好难受???

点解??o?
 
首先Property一般是拿来写到Published部分的。用来在Property Browswer中显示和操作
控件属性的。你可以直接写一个方法在Form1中调用就可以了。
其次,ProjectNo[Name:Integer] : String 部分有点看不明白……
 
1. 当该属性用于可视化时,Property是用于Published的,
在Property Inspector中可以进行设置。

2A. 不管用不用于可视化,Property在类继承方面有着自身的作用:
type
Tabc=class
private
FMyP:Integer;
protected
property MyP:Integer read FMyP write FMyP;
end;

type
Tbcd=class(Tabc)
public
property MyP;//就能把父类Tabc的受保护属性MyP公开。
end;
2B. Property可通过读写方法制定该属性的行为,父类的读写方法可为私有,
而子类通过该属性访问即可。

3. 属性能使程序的可读性增加,不过就见仁见智啰。
Java风格:
abc.setName("abc");
s=abc.getName;
Delphi风格:
abc.Name:='abc';
s:=abc.Name;
4. 还有很多,但还没想到,就写以上几点吧。

As to "其次,ProjectNo[Name:Integer] : String 部分有点看不明白……",
不如看看TStrings的Items属性吧,这里就不再说了。
 
接受答案了.
 
后退
顶部