Взвываю к вашей помощи, о форумцы!
Нужно написать такую программу:
есть форма, я щелкаю по ней и в том месте появляется либо кнопка, либо просто объект текста, либо выпадающий список и т.п. Потом с этими объектами я работаю: могу перемещать, растягивать, редактировать его данные(id,текст, если список - то элементы списка, если кнопка - то эвент клика).
Чем это отличается от стандатрного редактора форм в Дельфе?
1) На нем распологаются другие объектры, тип которых задаю я, и они отличаются от компонентов дельфи
2) Возможность сохранить форму в текстовой форме. Редактировать файлы *.dfm не хочется - там многого не нужного. Много нет(к примеру нет свойств объектов)
То есть, я хочу написать программу - запускаешь ее. Расставляешь объекты, редактрируешь их свойства и сохраняешь в текстовой форме.
Проблема в том что кроме как перехвата события клика по форме мне в голову ничего не приходит (а может я и не знаю). но из этого особо много не выжмешь, это при каждом клике нужно проверять куда кликнул - на какой-то объект(значит доступно его редактрирование), либо на его границу(значит меняем размеры) либо в пустое место. А это оперирование с кучей цифр - я просто с ума сойду, прежде чем напишу такое. Может есть пути по-легче?
[Ответ]
хм тут ничего сложного не вижу с точки зерняи технической реализации. проблема тут одна: как сохранять и редактировать логику взаимодействия объектов.
как мне примерно видется это дело:
создается Popup менюшка. По красивой форме редактирования свойств для каждого объекта. Менюшка вешается на форму и содержит список добавляемых объектов. Нажали на нужный пнукт, создали объект, SHowModal нарисовали форму со свойствами данного объета. Ok Cancel - оставили объект либо уничтожили. Соответственно эти же модальные формы остаются для редактирования св-в уже существующих объектов.
Только надо ссылку на объект редактированя поменять. Собственно нужные компоненты оформляются в виде динамического массива по штуке на каждый тип объекта. Модальной форме передается номер элемента массива, через него и осуществляется манипулирование редактируемым объектом. Есть веселый способ как определить номер компонента - забивается в какое-нибудь св-во типа Hint или еще какое-нибудь не используемое, номер компонена в массиве при его создании. можно сам компонент подредактировать добавив это поле. Собственно у каждого обработчика события есть параметр Sender и получается что-то вида
num:=StrToInt((Sender as TButton).Hint);
На пальцах все хреново объяснять, возможно я сумбурно все описал. Просто у меня сейчас Delphi нет , а так бы накидал побыстрому примерчик.
[Ответ]
Pengvin, большое спасибо ))))))
почти то что нужно. но ничего, исправим.
P.s. извиняюсь за столь длительное отсуствие - дела.
будут еще вопросы - напишу.
еще раз спасибо
[Ответ]