Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2014, 16:28   #1
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию Форма как свойство и объект действий у компонента

Всем привет. Пытаюсь раздумать кое-какой компонент.
Есть компонент. Он небольшой, но немного труден в написание. У компонента, форма, написанная в режиме проектирования или динамически, может использоваться как свойство. Форма может быть создана(создана её переменная), изменены могут её свойства или компонентов на ней, так же возможно пользователь захочет изменить какой-либо компонент и наконец она может быть уничтожена.
Задачи компонента: Функцией показать форму. Отследить, какие свойства у компонентов были изменены и на что(имя компонента и название свойств задают в виде строки, такого вида: [имя компонента][имя свойства][индификатор]). Результат функции, строковой вид всех изменений такого вида: [индификатор][значение свойства после закрытия формы, если оно было изменено].
Все формы для компонента хранятся в массиве из TMessageForm. TMessageForm-это тип, прямой наследник класса TForm.
Вопросы: Как мне добавить в этот массив форму созданную в режиме проектирования? Как мне добавлять туда формы динамически, если компоненты на этих формах могут быть разного типа и их может быть разное количество?
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 28.07.2014, 17:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Т.е. другими словами ты хочешь сделать мониторинг свойств объектов в твоем проекте? Любое изменение любого свойства любого объекта должно фиксироваться твоим компонентом - я правильно понял?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.07.2014, 17:56   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Неправлино поставили задачу.

Есть не визуальный компонент-квадратик с картинкой.
В нем есть список, где регистрируются компоненты с формы X вида: Компонент.Свойство.

Компонент где-то хранит исходные значения компонент, т.е. предыдущее сохранение, при созранении данных, компонент перебирает зарегестрированные компоненты, их свойства и сравнивает с исходнымы(ищет изменения), изменения перезаписывает в файл.

Все.

Ваша идея выполнима на уровне disign-time используя средства IDE, в run-time можно использовать RTTI, но опять же он не для всех классов генерируется.
Человек_Борща вне форума Ответить с цитированием
Старый 28.07.2014, 18:18   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Кстати кажется среди пакета JEDI есть уже такой компонент.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.07.2014, 18:57   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Кстати кажется среди пакета JEDI есть уже такой компонент.
ну целей такой задаче можно много подставить. JIDi - большая куча непонятно чего. Вроде как и ного и хорошо и полезно, но вот беда - каждый 5й - глючит, косячит.
Человек_Борща вне форума Ответить с цитированием
Старый 28.07.2014, 20:38   #6
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Т.е. другими словами ты хочешь сделать мониторинг свойств объектов в твоем проекте? Любое изменение любого свойства любого объекта должно фиксироваться твоим компонентом - я правильно понял?
Не совсем. Программируя, я задаю в массиве мониторить только те свойства, которые надо. В конечном результате функции, я должен увидеть значения свойств, которые были изменены пользователем. Короче алгоритм такой:
1. Компонент показывает форму и компоненты на ней.
2. Компонент автоматом изменяет свойства компонентов, на те которые задали в параметрах функции вызова. Параметр представляет собой массив строк такого типа:
[имя компонента][имя свойства][значение].
...
[имя компонента N][имя свойства N][значение N].
3. Дальше вступает в игру пользователь. Ему выведется форма с уже установленными свойствами.
4. Пользователь что-то делает делает с компонентами(в основном полями ввода) и нажимает на кнопку или просто на крестик(если, конечно, он там есть).
Не зависимо какую кнопку нажал пользователь, форма закроется, но перед этим зафиксирует, то что он нажал, а так же проверит изменились ли мониторинговые свойства. Ну и если они изменились, то создает такой список:
[индефикатор(Integer)][имя компонента][имя свойство][новое значение].
в конце списка будет стоять название кнопки(не caption!), которую нажал пользователь.
Всё это является результатом функции вызова. Проблема в том, что если я попытаюсь так сделать, то у меня не фига не получится и думаю как всё это оформить по другому.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.

Последний раз редактировалось саша40; 28.07.2014 в 20:45.
саша40 вне форума Ответить с цитированием
Старый 28.07.2014, 21:39   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
я должен увидеть значения свойств, которые были изменены пользователем
Это если они "паблик". А с приватными что делать будешь? Из-под твоего компонента они скорее всего будут не видны.
Цитата:
Короче алгоритм такой
Для начала ты должен как-то получить и зафиксить список свойств. Допустим RTTI тебе в этом деле поможет:
http://delphiworld.narod.ru/base/the...tice_rtti.html
http://www.kansoftware.ru/?tid=2145

Однако как-то нужно их мониторить. Таймер? Доппоток?

...не знаю. Мое мнение - ничего у тебя не выйдет...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.07.2014, 10:57   #8
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это если они "паблик". А с приватными что делать будешь? Из-под твоего компонента они скорее всего будут не видны.

Для начала ты должен как-то получить и зафиксить список свойств. Допустим RTTI тебе в этом деле поможет:
http://delphiworld.narod.ru/base/the...tice_rtti.html
http://www.kansoftware.ru/?tid=2145

Однако как-то нужно их мониторить. Таймер? Доппоток?

...не знаю. Мое мнение - ничего у тебя не выйдет...
Неправильно ты меня понимаешь. Я могу при показе записать их исходное значение(мониторинговых свойств), а при закрытие формы сравнить значения мониторинговых свойств с записанными при показе и если не совпадает, то записать в результат. Компоненты я специально заставлю себя поместить в Public, чтобы их можно было использовать. Вот думаю следить за свойствами через их указатели(записать значения адреса при показе и сравнить при закрытие), но могут быть кое-какие непонятки.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение размера форма и выполнение действий Andersen1313 C++ Builder 2 12.10.2013 12:48
Свойство Text компонента ComboBox Aleksey1989 Помощь студентам 3 25.11.2010 14:17
создать свойство компонента дядя Компоненты Delphi 2 11.05.2008 23:23
Свойство DocumentSource компонента XML posdnyaa Компоненты Delphi 0 21.02.2008 16:19
Свойство Params компонента TQuery Washington БД в Delphi 3 07.02.2007 12:04