提示Class tbutton not found ??为什么呢? RegisterClasses([TButton]);一下就可以了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 newwen(wen) :应该写在哪里呢? 再问一个:如果是自己的一个class如下Unit Unit2;InterfaceUses Windows, SysUtils, Dialogs, Classes, Forms, Graphics, comctrls, StdCtrls, Controls, typinfo;Type TBaseObject = Class(TPersistent) {数据据结果在这里写} Private FX: Integer; FY: Integer; FStr: String; {....} {修改结构同时也修改CopyObject中的属性} Public Constructor Create; Destructor Destroy; Override; Property X: Integer Read FX Write FX; Property Y: Integer Read FY Write FY; Property OneStr: String Read FStr Write FStr; {....} {修改结构同时也修改CopyObject中的属性} End;Type TCxBase = Class(TList) Private Function GetObject(AIndex: Integer): Pointer; Procedure SetObject(AIndex: integer; Aobject: Pointer); Public Procedure addObject(NewObject: Pointer); Procedure InsertObject(AIndex: Integer; NewObject: Pointer); Procedure DeleteObject(AIndex: Integer); Property GmObject[Index: integer]: Pointer Read Getobject Write SetObject; {ToDo: GmObject :如果将List列表中的某一个项直接赋给另一项,则释放时有可能会出错。 这是因为指向了同一个地址而释放多错而出错。} Destructor Destroy; Override; Function CopyObject(AObject: Pointer):Pointer; {将结构中的所有的值重新赋值一次} Procedure PasteObject(AObject:Pointer);{ Copy and Paste} Function FindObjectStr(FieldName: String; FieldValue: String): Boolean; Function FindObjectReal(FieldName: String; FieldValue: Real): Boolean; End;Type tmyobject = Class(TBaseObject) private fa:string; Public property a:string read fa write fa;end;ImplementationConstructor TBaseObject.Create;Begin Inherited Create; Fx := 0; Fy := 0; FStr := 'abc';End;Destructor TBaseObject.Destroy;Begin Inherited Destroy;End;{ Tcxbase }Procedure Tcxbase.addObject(NewObject: Pointer);Begin Add(NewObject);End;function TCxBase.CopyObject(AObject: Pointer): Pointer;Var Tempobject:TBaseObject;begin Tempobject.X := TBaseObject(AObject).X; Tempobject.Y := TBaseObject(AObject).Y; Result:=Tempobject;end;Procedure TCxBase.DeleteObject(AIndex: Integer);Begin If AIndex > Self.Count - 1 Then MessageDlg('List index out of bounds(' + IntToStr(AIndex) + ')', mtError, [mbOK], 0) Else Begin TBaseObject(Self.Items[Aindex]).free; Self.Delete(Aindex); End;End;Destructor Tcxbase.Destroy;Var I: integer;Begin For i := 0 To Self.Count - 1 Do Begin TBaseObject(Self.Items[i]).free; End; Inherited DEstroy;End;Function TCxBase.FindObjectReal(FieldName: String; FieldValue: Real): Boolean;Begin// ShowMessage('this is 123.3'); Result := True;End;Function TCxBase.FindObjectStr(FieldName, FieldValue: String): Boolean;{Var aObject: TObJect; OneBaseObject: TBaseObject; aa, bb: String; PropInfo: PPropInfo;}Begin这里是问题:1、要根据所传递过来结构中某个属性和该属性的性,那应当如何判断所传过的属性在上面的结果中已定义呢?如上面的onestr,则是正确,如传onstr就是错误的呢?2、如果传过的属性是合法的,那么应该当如何取该属性的值呢?谢 谢{ OneBaseObject := Self.items[0]; showmessage(onebaseobject.onestr); aObject := OneBaseObject; bb := 'OneStr'; PropInfo := GetPropInfo(aObject.ClassInfo, bb); aa := ''; If PropInfo = Nil Then ShowMessage(aa) Else aa := GetStrprop(aobject As TBaseObject, PropInfo); // ShowMessage(aa); } Result := True;End;Function Tcxbase.GetObject(AIndex: Integer): Pointer;Begin Result := Self.Items[Aindex];End;Procedure Tcxbase.InsertObject(AIndex: Integer; NewObject: Pointer);Begin self.Insert(Aindex, NewObject);End;procedure TCxBase.PasteObject(AObject: Pointer);Var NewObject:TBaseObject;begin NewObject:=TBaseObject.Create; with NewObject do begin x:=TBaseObject(AObject).x; y:=TBaseObject(AObject).y; end; Self.addObject(NewObject);end;Procedure Tcxbase.SetObject(AIndex: integer; Aobject: Pointer);Begin If Aindex > Self.Count - 1 Then Begin MessageDlg('List index out of bounds(' + IntToStr(AIndex) + ')', mtError, [mbOK], 0) End Else Self.Items[Aindex] := Aobject;End;End. fastreport 中打印两栏数据如何实现? 我的应用系统中存在远程访问的问题,请赐教,谢谢! 请也熟悉vc的兄弟拉一把(急求) Access数据库问题 放分200,请各位同仁多多支持。 急于知道:Object Pascal在D6和D7中的差别。 进门拿分 bitmap图片与StreamString的转换。 关键是我怎样得到 top 10 中的第1条至第10条记录,谢谢 急,关于报表的,无论高手低手都一律请入,分数陆续会加到600分!分数必分,决不食言!(VB转Delphi者求助!) 我在d6里不小心把控件hide了,怎么再把它们弄出来啊??? 请问在2000下怎么屏蔽系统键
再问一个:如果是自己的一个class如下Unit Unit2;Interface
Uses
Windows, SysUtils, Dialogs, Classes, Forms, Graphics, comctrls, StdCtrls,
Controls, typinfo;
Type
TBaseObject = Class(TPersistent) {数据据结果在这里写}
Private
FX: Integer;
FY: Integer;
FStr: String;
{....}
{修改结构同时也修改CopyObject中的属性}
Public
Constructor Create;
Destructor Destroy; Override;
Property X: Integer Read FX Write FX;
Property Y: Integer Read FY Write FY;
Property OneStr: String Read FStr Write FStr;
{....}
{修改结构同时也修改CopyObject中的属性}
End;
Type
TCxBase = Class(TList)
Private
Function GetObject(AIndex: Integer): Pointer;
Procedure SetObject(AIndex: integer; Aobject: Pointer);
Public
Procedure addObject(NewObject: Pointer);
Procedure InsertObject(AIndex: Integer; NewObject: Pointer);
Procedure DeleteObject(AIndex: Integer);
Property GmObject[Index: integer]: Pointer Read Getobject Write SetObject;
{ToDo:
GmObject :如果将List列表中的某一个项直接赋给另一项,则释放时有可能会出错。
这是因为指向了同一个地址而释放多错而出错。}
Destructor Destroy; Override;
Function CopyObject(AObject: Pointer):Pointer; {将结构中的所有的值重新赋值一次}
Procedure PasteObject(AObject:Pointer);{ Copy and Paste}
Function FindObjectStr(FieldName: String; FieldValue: String): Boolean;
Function FindObjectReal(FieldName: String; FieldValue: Real): Boolean;
End;
Type
tmyobject = Class(TBaseObject)
private
fa:string;
Public
property a:string read fa write fa;
end;ImplementationConstructor TBaseObject.Create;
Begin
Inherited Create;
Fx := 0;
Fy := 0;
FStr := 'abc';
End;Destructor TBaseObject.Destroy;
Begin
Inherited Destroy;
End;{ Tcxbase }Procedure Tcxbase.addObject(NewObject: Pointer);
Begin
Add(NewObject);
End;function TCxBase.CopyObject(AObject: Pointer): Pointer;
Var
Tempobject:TBaseObject;
begin
Tempobject.X := TBaseObject(AObject).X;
Tempobject.Y := TBaseObject(AObject).Y;
Result:=Tempobject;end;Procedure TCxBase.DeleteObject(AIndex: Integer);
Begin
If AIndex > Self.Count - 1 Then
MessageDlg('List index out of bounds(' + IntToStr(AIndex) + ')', mtError, [mbOK], 0)
Else Begin
TBaseObject(Self.Items[Aindex]).free;
Self.Delete(Aindex);
End;
End;Destructor Tcxbase.Destroy;
Var
I: integer;
Begin
For i := 0 To Self.Count - 1 Do Begin
TBaseObject(Self.Items[i]).free;
End;
Inherited DEstroy;
End;Function TCxBase.FindObjectReal(FieldName: String; FieldValue: Real): Boolean;
Begin
// ShowMessage('this is 123.3');
Result := True;
End;Function TCxBase.FindObjectStr(FieldName, FieldValue: String): Boolean;
{Var
aObject: TObJect;
OneBaseObject: TBaseObject;
aa, bb: String;
PropInfo: PPropInfo;}
Begin
这里是问题:1、要根据所传递过来结构中某个属性和该属性的性,那应当如何判断所传过的属性在上面的结果中已定义呢?如上面的onestr,则是正确,如传onstr就是错误的呢?
2、如果传过的属性是合法的,那么应该当如何取该属性的值呢?谢 谢
{ OneBaseObject := Self.items[0];
showmessage(onebaseobject.onestr);
aObject := OneBaseObject;
bb := 'OneStr';
PropInfo := GetPropInfo(aObject.ClassInfo, bb);
aa := '';
If PropInfo = Nil Then
ShowMessage(aa)
Else
aa := GetStrprop(aobject As TBaseObject, PropInfo);
// ShowMessage(aa); }
Result := True;
End;Function Tcxbase.GetObject(AIndex: Integer): Pointer;
Begin
Result := Self.Items[Aindex];
End;Procedure Tcxbase.InsertObject(AIndex: Integer; NewObject: Pointer);
Begin
self.Insert(Aindex, NewObject);
End;procedure TCxBase.PasteObject(AObject: Pointer);
Var NewObject:TBaseObject;
begin
NewObject:=TBaseObject.Create;
with NewObject do begin
x:=TBaseObject(AObject).x;
y:=TBaseObject(AObject).y;
end;
Self.addObject(NewObject);
end;Procedure Tcxbase.SetObject(AIndex: integer;
Aobject: Pointer);
Begin
If Aindex > Self.Count - 1 Then Begin
MessageDlg('List index out of bounds(' + IntToStr(AIndex) + ')', mtError, [mbOK], 0)
End Else
Self.Items[Aindex] := Aobject;
End;End.