如何得到一个一个控件(如:BUTTON,LABLEL等)的《所有属性》和所有属性的全部可能取值?多谢!!!!
如何得到一个一个控件(如:BUTTON,LABLEL等)的《所有属性》和所有属性的全部可能取值?多谢!!!! 问题点数:100、回复次数:25Top
1 楼banana12345(华北电力大学)回复于 2003-05-01 14:41:37 得分 0
求求大家了!!!
求求大家了!!!!!!
求求大家了!!!!!!!!
Top
2 楼banana12345(华北电力大学)回复于 2003-05-01 15:11:05 得分 0
求求大家了!!!
求求大家了!!!!!!
求求大家了!!!!!!!!Top
3 楼zouliyuan(3000万悬赏你的想法)回复于 2003-05-01 15:17:30 得分 2
DELPHI的帮助F1帮助主题输入要找的控件名Top
4 楼banana12345(华北电力大学)回复于 2003-05-01 15:31:24 得分 0
求求大家了!!!
求求大家了!!!!!!
求求大家了!!!!!!!!
Top
5 楼xiaobudian125(Amamn)回复于 2003-05-01 16:22:13 得分 2
利用delphi的helpTop
6 楼tw_cshn(一无所有)回复于 2003-05-01 16:29:42 得分 6
这样
for I:=0 to componentcount-1 do
if components[I] is TButton then
TButton(components[I]).enabled:=true;
if components[I] is TLABLEL then
TLABLEL(components[I]).enabled:=true;
如此而已Top
7 楼banana12345(华北电力大学)回复于 2003-05-01 17:09:00 得分 0
我需要的是用程序读出 一个一个控件(如:BUTTON,LABLEL等)的《所有属性》和所有属性的全部可能取值?
Top
8 楼banana12345(华北电力大学)回复于 2003-05-01 19:02:31 得分 0
gzTop
9 楼kataboy(老公)回复于 2003-05-01 19:04:45 得分 6
支持支持支持支持支持支持支持支持支持支持支持支持█████████支持支持
支持支持支持支持支持支持支持支持支持███████████████支持支持
支持支持支持支持支持支持支持无██████████████████支持支持
支持支持支持支持支持支████████████████支持支持支持支持支持
支持支持支持支持███████无███支持█████持支持支持支持支持支持
支持无████████████支持支持支持████支持支持支持支持支持支持
无██████████████支持支持支持████支持支持支持支持支持支持
无████████████支持支持支持无███████████支持支持支持
无████████████支持支持支持██████████████支持支持
支持██████████支持支持无██████支支持███████支持支持
支持支持支持支持████支持支持无████支支持支持持█████支支持支持
支持支持支持支持████支持支持████支持██支持无█████支持支持无
支持支持支持支持████支持支持████支持████无█████支持支持无
支持支持支持支持████支持支持████支持████无█████支持支持无
支持支持支持支持████支持支持████支持███支持█████支持支持无
支持支持支持支持████支持支持████支持███支持█████支持支持无
支持支持支持支持████支持支持████无████支持█████支持支持无
支持支持支持支持████支持支持████无████支持█████支持支持无
支持支持支持支持████支持支持████无████支持█████支持支持无
支持支持支持支持████支持支持████无████支持█████支持支持无
支持支持支持支持████支持支持███支持████支持█████支持支持无
支持██支持无█████支持支持███支持███支持无█████支持支持无
支持██████████支持支持无██支持██支持支持█████支持支持无
支持无█████████支持支持支持支持███支持支持无████支持支持无
支持支持无███████支持支持支持支持███无████支持支持支持支持无
支持支持支持██████支持支持支持无████支持█████支持支持支持无
支持支持支持支持无███支持支持支持█████支持无███████支持支持
支持支持支持支持支持支持支持支持██████支持支持无██████支持支持
支持支持支持支持支持支持支持无██████支持支持支持███████支持无
支持支持支持支持支持支持支持█████支持支持支持支持无██████支持无
支持支持支持支持支持支持无█████支持支持支持支持支持无████支持支持
支持支持支持支持支持支持███支持支持支持支持支持支持支持无███Top
10 楼zleeway(杂草)回复于 2003-05-01 19:17:11 得分 2
你在写什么程序啊?怎么会有这么怪的需求.Top
11 楼banana12345(华北电力大学)回复于 2003-05-01 19:22:11 得分 0
to kataboy(小浩子)
谢谢
我在设计一个在运行期可以调整得应用
Top
12 楼mikehs(hu)回复于 2003-05-01 20:04:39 得分 2
typeinfoTop
13 楼banana12345(华北电力大学)回复于 2003-05-01 20:26:16 得分 0
upTop
14 楼banana12345(华北电力大学)回复于 2003-05-01 20:32:52 得分 0
upTop
15 楼INeedCa(缺钙)回复于 2003-05-01 20:49:16 得分 54
procedure TForm1.Button1Click(Sender: TObject);
var
Pclass :PTypeInfo;
PClasstd :PTypeData;
ppi :PPropInfo;
i, j:Integer;
ptd :PTypeData;
RowIndex :Integer;
tmpProps :PPropList;
tmpCount :Integer;
tmpValue :Variant;
FnPropCount :Integer;
FPProps :PPropList; //当前编辑的属性列表
FControl :TObject;
begin
FControl := xx;
PClass := PTypeInfo(FControl.ClassInfo);
//得到控件信息
if PClass^.Kind = tkClass then begin //如果是类
PClasstd := GetTypeData(PClass); //得到TypeData
FnPropCount := PClasstd^.PropCount;
if FnPropCount > 0 then begin
GetMem(FPProps, sizeof( PPropInfo) * FnPropCount); //分配内存
GetPropInfos(PClass, FPProps); //得到所有的属性
end;
end;
//得到第一个控件的所有属性,并放入到FPProps中
for i := 0 to FnPropCount - 1 do
begin
pPi := FpProps[i];
if Assigned(Ppi) then begin
if {inStringArray(ifo_gPropClasses, ppi.PropType^.Name)
or inStringArray(ifo_gProps, ppi.Name)} True then
begin
Self.Memo1.Lines.Add(ppi.Name + ' - ' + ppi.PropType^.Name + ' - ' + ppi.Name);
case ppi.PropType^.Kind of
tkLString:begin
tmpValue := GetStrProp(FControl, ppi.Name);
Self.Memo1.Lines.Add(' ' + tmpValue);
end;
tkInteger:begin
tmpValue := GetOrdProp(FControl, ppi.Name);
Self.Memo1.Lines.Add(' ' + IntToStr(tmpValue));
end;
tkClass:begin
if ppi.PropType^.Name = TFont.ClassName then begin
Self.Memo1.Lines.Add(' ' + '(TFont)');
end;
end;
tkEnumeration:begin
end;
end;
end;
end;
end;
// Self.PropGridSelectCell(nil, FForm.sgrdEdit.Col,
// FForm.sgrdEdit.Row, tmpbool);
end;
Top
16 楼banana12345(华北电力大学)回复于 2003-05-01 21:14:39 得分 0
upTop
17 楼banana12345(华北电力大学)回复于 2003-05-01 21:16:00 得分 0
upTop
18 楼larruping(久有凌云志)回复于 2003-05-01 21:21:11 得分 2
markTop
19 楼banana12345(华北电力大学)回复于 2003-05-02 09:15:08 得分 0
UPTop
20 楼vuen(阿土)回复于 2003-05-02 10:41:22 得分 2
不懂,关注Top
21 楼banana12345(华北电力大学)回复于 2003-05-02 11:06:38 得分 0
UPTop
22 楼winsock2000(风筝)回复于 2003-05-02 13:16:04 得分 20
转自大富翁的!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls,typinfo;
type
TForm1 = class(TForm)
Button1: TButton;
insp: TStringGrid;
event: TStringGrid;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var count,j,k,i : integer;
proplist: PPropList;//
Propinfo : PPropinfo;
begin
Count := GetTypeData(Sender.ClassInfo)^.PropCount;
if Count > 0 then
begin
// 得到属性数
GetMem(PropList, Count * SizeOf(PPropList));
try
// 得到属性
GetPropInfos(Sender.ClassInfo, PropList);
insp.RowCount:=count;
event.RowCount:=count;
j:=0;
K:=0;
for I := 0 to Count - 1 do
begin
PropInfo := PropList^[I];
case PropInfo.PropType^.kind of
tkInteger,
tkEnumeration :
insp.cells[1,j]:= inttostr(getordProp(Sender,PropInfo));
tkString,
tkLString,
tkWString :
insp.cells[1,j]:= getstrProp(Sender,PropInfo);
tkFloat :
insp.cells[1,j]:=FloattoStr(GetFloatProp(Sender,PropInfo));
tkMethod :
event.cells[1,k]:='Event';
else
insp.cells[1,i]:='TYPE'+inttostr(ord(PropInfo.PropType^.kind));
end;
if PropInfo.PropType^.kind=tkMethod then
begin
event.cells[0,k]:=PropInfo.Name;
k:=k+1
end
else
begin
insp.cells[0,j]:=PropInfo.Name;
j:=j+1;
end;
end;
insp.RowCount:=j;
event.RowCount:=k;
finally
FreeMem(PropList, Count * SizeOf(PPropList));
end;
end;
end;
Top
23 楼banana12345(华北电力大学)回复于 2003-05-02 19:03:55 得分 0
TO INeedCa(缺钙)
您的程序仅仅遍历了所有的属性,并没有给出这些属性的所有的取值,如:windowstate的值可能是:wsNormal,wsMaximized,wsMinimizedTop
24 楼banana12345(华北电力大学)回复于 2003-05-02 19:18:29 得分 0
up
Top




