Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Выставить значение для определенного свойства всех компонент формы или всех компонент нужного класса

Delphi , Компоненты и Классы , Свойства и События

Выставить значение для определенного свойства всех компонент формы или всех компонент нужного класса

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

procedure TForm1.SetProperties(ClassName, SomeProperty: string; Value: Integer);
 var
   i: integer;
   PropInfo: PPropInfo;
   Component: TComponent;
 begin
   for i := 0 to ComponentCount - 1 do
   begin
     Component := Components[i];
     if (Component is TControl) and ((Component.ClassName = ClassName)
       or (ClassName = 'AllComponents')) then
     begin
       PropInfo := GetPropInfo(Component.ClassInfo, SomeProperty);
       if Assigned(PropInfo) then
         SetOrdProp(Component, PropInfo, Integer(Value));
     end;
   end;
 end;

 // Examples, Beispiele: 

procedure TForm1.Button1Click(Sender: TObject);
 begin
   // Make all components readonly 
  SetProperties('AllComponents', 'readonly', 1);
   // Make all components of Class TEdit invisible 
  SetProperties('TEdit', 'visible', 0);
   // Set the Height Property of all TLabels 
  SetProperties('TLabel', 'Height', 30);
   // Set ShowHint to false for all components 
  SetProperties('AllComponents', 'ShowHint', 0);
   // Disable all TMemo Components 
  SetProperties('TMemo', 'Enabled', 0);
   // Set Autosize to true for all TLabels 
  SetProperties('TLabel', 'Autosize', 1);
 end;

Программный процесс, называемый SetProperties, устанавливает значение определенного свойства для всех компонентов определенной классификации или для всех компонентов в форме.

Процедура SetProperties принимает три параметра:

  • ClassName: имя класса, чьи компоненты должны быть затронуты.
  • SomeProperty: имя свойства, которое должно быть установлено.
  • Value: значение, которое должно быть присвоено указанному свойству.

Работает следующим образом:

  1. Перебирает все компоненты в форме (коллекция Components).
  2. Для каждого компонента проверяет, является ли он экземпляром контроля (TControl) и если имя класса компонента соответствует параметру ClassName или если ClassName равен 'AllComponents' (что означает все компоненты).
  3. Если условие выполнено, получает информацию о свойстве с помощью GetPropInfo.
  4. Если свойство существует, устанавливает его значение с помощью SetOrdProp.

Примеры демонстрируют использование этой процедуры:

  1. Сделать все компоненты readonly: SetProperties('AllComponents', 'readonly', 1).
  2. Сделать все TEdit-компоненты невидимыми: SetProperties('TEdit', 'visible', 0).
  3. Установить высоту свойства для всех TLabel-компонентов в 30: SetProperties('TLabel', 'Height', 30).
  4. Установить ShowHint в false для всех компонентов: SetProperties('AllComponents', 'ShowHint', 0).
  5. Отключить все TMemo-компоненты: SetProperties('TMemo', 'Enabled', 0).
  6. Установить Autosize в true для всех TLabel-компонентов: SetProperties('TLabel', 'Autosize', 1).

Эта процедура может быть полезна, когда вам нужно выполнить какое-либо действие на группе похожих компонентов в вашей форме или приложении.

В статье описывается процедура в Delphi, которая позволяет установить значение для определенного свойства всех компонентов формы или компонентов определенного класса.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Свойства и События ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 03:05:25/0.003277063369751/0