Выставить значения свойствDelphi , Компоненты и Классы , Свойства и СобытияВыставить значения свойствАвтор: Xavier Pacheco unit MainFrm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TMainForm = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Panel1: TPanel; Button5: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Panel1Click(Sender: TObject); procedure Button5Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var MainForm: TMainForm; implementation uses TypInfo; {$R *.DFM} procedure SetIntegerPropertyIfExists(AComp: TComponent; APropName: string; AValue: Integer); var PropInfo: PPropInfo; begin PropInfo := GetPropInfo(AComp.ClassInfo, APropName); if PropInfo <> nil then begin if PropInfo^.PropType^.Kind = tkInteger then SetOrdProp(AComp, PropInfo, AValue); end; end; procedure SetObjectPropertyIfExists(AComponent: TComponent; APropName: string; AValue: TObject); var PropInfo: PPropInfo; begin PropInfo := GetPropInfo(AComponent.ClassInfo, APropName); if PropInfo <> nil then begin if PropInfo^.PropType^.Kind = tkClass then SetObjectProp(AComponent, PropInfo, AValue); end; end; procedure SetBooleanPropertyIfExists(AComp: TComponent; APropName: string; AValue: Boolean); var PropInfo: PPropInfo; begin PropInfo := GetPropInfo(AComp.ClassInfo, APropName); if PropInfo <> nil then begin if PropInfo^.PropType^.Kind = tkEnumeration then SetOrdProp(AComp, PropInfo, Integer(AValue)); end; end; procedure SetStringPropertyIfExists(AComp: TComponent; APropName: string; AValue: string); var PropInfo: PPropInfo; TK: TTypeKind; begin PropInfo := GetPropInfo(AComp.ClassInfo, APropName); if PropInfo <> nil then begin TK := PropInfo^.PropType^.Kind; if (TK = tkString) or (TK = tkLString) or (TK = tkWString) then SetStrProp(AComp, PropInfo, AValue); end; end; procedure SetMethodPropertyIfExists(AComp: TComponent; APropName: string; AMethod: TMethod); var PropInfo: PPropInfo; begin PropInfo := GetPropInfo(AComp.ClassInfo, APropName); if PropInfo <> nil then begin if PropInfo^.PropType^.Kind = tkMethod then SetMethodProp(AComp, PropInfo, AMethod); end; end; procedure TMainForm.Button1Click(Sender: TObject); begin SetStringPropertyIfExists(Button1, 'Caption', 'Yahoo'); end; procedure TMainForm.Button2Click(Sender: TObject); begin SetIntegerPropertyIfExists(Button2, 'Width', 50); end; procedure TMainForm.Button3Click(Sender: TObject); begin SetBooleanPropertyIfExists(Button3, 'Enabled', False); end; procedure TMainForm.Button4Click(Sender: TObject); var F: TFont; begin F := TFont.Create; F.Name := 'Arial'; F.Size := 24; F.Color := clRed; SetObjectPropertyIfExists(Panel1, 'Font', F); end; procedure TMainForm.Button5Click(Sender: TObject); begin SetMethodPropertyIfExists(Button5, 'OnClick', GetMethodProp(Panel1, 'OnClick')); end; procedure TMainForm.Panel1Click(Sender: TObject); begin ShowMessage(Button5.Caption); end; end. Приведенный код - это проект Delphi, который устанавливает различные свойства компонентов в runtime с помощью процедур Вот подробное описание каждой процедуры:
В классе
Процедура Код демонстрирует, как динамически устанавливать свойства компонентов в runtime в Delphi. Однако стоит отметить, что использование этих процедур может сделать код более сложным и труднее для поддержки, особенно если есть много свойств для установки. Лучше использовать отдельные процедуры для каждого свойства или создавать более robust-систему для программной установки свойств. В статье описывается использование процедур для установки значений свойств компонентов в Delphi, включая установку значений свойств типа integer, object, boolean и string. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Свойства и События ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |