Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как почистить любые значения контролов ?? 
:(
    Опции темы
Denchik
Дата 1.3.2008, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 16.5.2006

Репутация: нет
Всего: нет



Есть вот такая милая вещь
Код


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;


Вот так к примеру чистит все свойства контролов на форме
SetProperties('AllComponents', 'text',0);
SetProperties('AllComponents', 'checked',0);
SetProperties('AllComponents', 'value',0);

А вот так не работает 
SetProperties('TDateTimePicker', 'time',0);
и вроде еще Radiobox не чистит

нет ни у кого более универсального решения ??



PM MAIL   Вверх
Rrader
  Дата 2.3.2008, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 70
Всего: 191



Пример в аттаче. И еще: обнулить дату просто так не получится. Потому что при установке свойства Date у TDateTimePicker выполняется такой метод:
Код

procedure TCommonCalendar.SetDate(Value: TDate);
begin
  ReplaceTime(TDateTime(Value), FDateTime);
  if Value = 0.0 then CheckEmptyDate;
  try
    CheckValidDate(Trunc(Value));
    SetDateTime(Value);
  except
    SetDateTime(FDateTime);
    raise;
  end;
end;

А дата типа 00.00.0000 не является верной. Ну здесь тоже есть пути решения, н-р, Class Cracking smile 

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  Project.rar 5,86 Kb


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
MetalFan
Дата 2.3.2008, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(Denchik @  1.3.2008,  19:41 Найти цитируемый пост)
А вот так не работает 
SetProperties('TDateTimePicker', 'time',0);

Цитата(Denchik @  1.3.2008,  19:41 Найти цитируемый пост)
       if Assigned(PropInfo) then
         SetOrdProp(Component, PropInfo, Integer(Value));

ответ в твоем коде.
попытка установить OrdProp, которое на самом деле TDateTime




--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Denchik
Дата 2.3.2008, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 16.5.2006

Репутация: нет
Всего: нет



Еще последний вопрос ,
чтобы было мне счастье  smile 

как одолеть вот этот коварный вид контролов TCheckListBox
checked - 0 не помагает  smile 
PM MAIL   Вверх
lukas
Дата 2.3.2008, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



Denchik

такое невозможно, потому что Checked это массив... Array, а массивы задавать через TypInfo нельзя...




--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
bems
Дата 2.3.2008, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



а вызвать конструктор на уже созданом объекте не подойдет?


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Denchik
Дата 2.3.2008, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 16.5.2006

Репутация: нет
Всего: нет



На ум приходит тока 
FindComponent и цикл анчекед до упора 

типа будет полуниверсальное решение 


Это сообщение отредактировал(а) Denchik - 2.3.2008, 17:41
PM MAIL   Вверх
lukas
Дата 2.3.2008, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



bems

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


P.S. А собествено к чему вопрос?

Это сообщение отредактировал(а) lukas - 2.3.2008, 18:15


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
bems
Дата 2.3.2008, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(lukas @  2.3.2008,  18:13 Найти цитируемый пост)
это практически функция возвращающая указатель на экземпляр класса... а твоя переменная это типовой указатель....  
Спасибо, ты открыл мне гдаза на устройство мира smile

Цитата(lukas @  2.3.2008,  18:13 Найти цитируемый пост)
А собествено к чему вопрос?
Я хотел спросить не подойдет ли автору ветки такой способ реинициализации свойств



--------------------
Обижено школьников: 8
PM MAIL   Вверх
Denchik
Дата 2.3.2008, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 16.5.2006

Репутация: нет
Всего: нет



Цитата(bems @  2.3.2008,  17:36 Найти цитируемый пост)
а вызвать конструктор на уже созданом объекте не подойдет? 

Честно говоря , я это не совсем понял  smile 
PM MAIL   Вверх
bems
Дата 2.3.2008, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(Denchik @  2.3.2008,  21:15 Найти цитируемый пост)
Честно говоря , я это не совсем понял  

Код

Component.Create(component.owner)


Добавлено через 4 минуты и 13 секунд
где Component объект а не класс


--------------------
Обижено школьников: 8
PM MAIL   Вверх
MetalFan
Дата 2.3.2008, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



имхо это может привести к непредвиденным последствиям... например утечкам памяти...


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Denchik
Дата 3.3.2008, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 16.5.2006

Репутация: нет
Всего: нет



Цитата(lukas @  2.3.2008,  17:31 Найти цитируемый пост)
такое невозможно, потому что Checked это массив... Array, а массивы задавать через TypInfo нельзя...

А может как-то NIL ему передать  smile 

PM MAIL   Вверх
MetalFan
Дата 3.3.2008, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(Denchik @  3.3.2008,  14:04 Найти цитируемый пост)
А может как-то NIL ему передать  smile 

сказали низя, значит низя.
дак это еще и не published св-во. так что забудь


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0866 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.