Вопрос:
Как во время выполнения определить поддерживает ли обьект заданное свойство?
Ответ:
function HasProperty(Obj : TObject; Prop : string) : PPropInfo;
begin
	Result := GetPropInfo(Obj.ClassInfo, Prop);

end;

procedure TForm1.Button1Click(Sender: TObject);
var
	p : pointer;
begin
	p :=  HasProperty(Button1, 'Color');
	if p <> nil then
		SetOrdProp(Button1, p, clRed)
	else
		ShowMessage('Button has no color property');
	p :=  HasProperty(Label1, 'Color');
	if p <> nil then
		SetOrdProp(Label1, p, clRed)
	else
		ShowMessage('Label has no color property');
	p :=  HasProperty(Label1.Font, 'Color');
	if p <> nil then
		SetOrdProp(Label1.Font.Color, p, clBlue)
	else
		ShowMessage('Label.Font has no color property');
end;

Tags: , , , , , , ,

Дата создания: Воскресенье, июня 8, 2008 - 20:27 и находится в категории Delphi FAQ. Вы можете отслеживать ответы через RSS 2.0. Вы можете ответить.

Ответить

Вы должны быть в системе для комментирования.