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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2014, 18:28   #121
AndreyNM
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 17
По умолчанию

И ещё вопросик - секции initialization и finalization в модулях не поддерживаются?
AndreyNM вне форума Ответить с цитированием
Старый 24.11.2014, 19:21   #122
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Цитата:
Сообщение от AndreyNM Посмотреть сообщение
решил сделать на Дизеле фреймворк для быстрого создания форм в ран-тайм, типа так:

AddDBEdit('Name', 'Наименование', 100);
AddDBEdit('FullName', 'Полное наименование', 200, False);
AddDBEdit('Passport', 'Паспортные данные', 200);
AddDBEdit('INN', 'ИНН', 20, False);
Подобные функции можно в сам движок зашить типа function AddControl(Class: TControlClass; Name: string; Bounds: TRect): TControl; Функцию можно привязать к TWinControl.
Хотя, прочитал статью, у меня проекты с сотнями форм, пока ни каких неудобств от dfm/lfm ресурсов не испытывал за 15 лет...

Последний раз редактировалось Rik; 24.11.2014 в 19:37.
Rik вне форума Ответить с цитированием
Старый 24.11.2014, 19:22   #123
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Цитата:
Сообщение от AndreyNM Посмотреть сообщение
И ещё вопросик - секции initialization и finalization в модулях не поддерживаются?
finalyzation - нет
initialization - есть, но после переноса на Lazarus не проверял работает или нет.
Rik вне форума Ответить с цитированием
Старый 24.11.2014, 21:39   #124
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Цитата:
Сообщение от AndreyNM Посмотреть сообщение
Если получится удобно, то выложу на всеобщее обозрение.
Вы бы выложили в любом случае, хоть посмотреть как вы функции используете, которые сегодня добавил... Я в Lazarus недавно, ещё не совсем освоился..

Я обновиk движок, добавил в TWinControl 'funciton AddControl(AControlClass, AComponentName: string; R: TRect): TControl' Это должно облегчить создание контролов программно. Пример использования:

http://visual-t.ru/files/ControlCreate.lm9

ps. преимущество подобных систем: можно расширять функционал библиотек, фактически не изменяя их самих, получается надстройка...

пример кода:
Код:
method TMainForm.CreateControl;
begin
  Panel1 = AddControl('TPanel', 'Panel1', Rect(10, 10, 300, 300)) as TPanel;
  EDit1 = Panel1.AddControl('TEdit', 'Edit1', Rect(50, 50, 200, 50)) as TEdit;
  Edit2 = Panel1.AddControl('TEdit', 'Edit2', Rect(50, 100, 200, 50)) as TEdit;
  Button1 = AddControl('TButton', 'Button1', Rect(100, 350, 180, 380)) as TButton;
  Button1.Caption = 'Жать тут';
  Button1.OnClick = @Button1Click
end;
AndreyNM Если свой пример выложите, возможно ещё доработаю...

Последний раз редактировалось Rik; 24.11.2014 в 21:43.
Rik вне форума Ответить с цитированием
Старый 24.11.2014, 22:24   #125
AndreyNM
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Rik Посмотреть сообщение
Вы бы выложили в любом случае, хоть посмотреть как вы функции используете, которые сегодня добавил... Я в Lazarus недавно, ещё не совсем освоился..

Я обновиk движок, добавил в TWinControl 'funciton AddControl(AControlClass, AComponentName: string; R: TRect): TControl' Это должно облегчить создание контролов программно. Пример использования:

http://visual-t.ru/files/ControlCreate.lm9

ps. преимущество подобных систем: можно расширять функционал библиотек, фактически не изменяя их самих, получается надстройка...
AndreyNM Если свой пример выложите, возможно ещё доработаю...
Да выкладывать особенно нечего - просто намётки - можно сказать тестировал возможности лазаруса так что не судите строго за пример. Сам последний раз его видел лет 10 назад.
Там динамически создаётся форма-родитель (абстрактный Участник), от неё отрождается форма физ. лица и выводится на экран. Преимущества в том, что в базовом классе можно реализовать общую бизнес-логику, ну и унифицировать интерфейс конечно. У меня у самого проект на 1000 форм да ещё и с визуальным наследованием почти 10 лет - в принципе всё нормально, но иногда из-за dfm и наследования глюки приходится огребать по полной, плюс достаточно много движений нужно сделать чтобы добавить лишнее поле на форму, особенно если это всё потом наследуется. Ну и к тому же есть определённые ограничения при проектировании интерфейса - нельзя например поменять в design-time родителя у унаследованного компонента и т.п.
Вот сейчас пытаюсь реализовать то, что написано в статье.
Идея в том, чтобы не просто выводить на форму контролы и раскидывать их красиво, а в том, чтобы буквально одной строкой кода добавить поле в датасет, создать контрол, связать их, заставить выполнять какую-то валидацию и т.п. Уже потом на контрол можно навесить кастомные обработчики и всё что угодно. Надеюсь это действительно ускорит и упростит поддержку продукта в будущем.
Кстати - у меня initialization как-то не работает. Она нужна для того чтобы регистрировать классы в общем списке, а потом уже добавлять на главную форму в меню, дерево и куда угодно. Ну и ещё искать формы при вызове одной формы через другую.
AndreyNM вне форума Ответить с цитированием
Старый 24.11.2014, 22:25   #126
AndreyNM
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 17
По умолчанию

что-то файл с проектом не прикрепился. 2-я попытка.
Вложения
Тип файла: zip NewProject1.zip (1.8 Кб, 13 просмотров)
AndreyNM вне форума Ответить с цитированием
Старый 26.11.2014, 18:17   #127
AndreyNM
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 17
По умолчанию

Добрый день!

Не нашёл поддержки создания классов по имени, т.е. что-то в этом духе:

TCustomFrameClass(FindClass(AClassN ame : string))

Скажите - это не реализовано или есть какие-то альтернативные механизмы?
AndreyNM вне форума Ответить с цитированием
Старый 27.11.2014, 09:24   #128
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Цитата:
Сообщение от AndreyNM Посмотреть сообщение
Добрый день!

Не нашёл поддержки создания классов по имени, т.е. что-то в этом духе:

TCustomFrameClass(FindClass(AClassN ame : string))

Скажите - это не реализовано или есть какие-то альтернативные механизмы?
Такой функции нет, могу добавить функцию CreateClass('ClassName'): TClass;
Только немного позже, что-то здоровье пошатнулось.
Rik вне форума Ответить с цитированием
Старый 27.11.2014, 09:58   #129
AndreyNM
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Rik Посмотреть сообщение
Такой функции нет, могу добавить функцию CreateClass('ClassName'): TClass;
Только немного позже, что-то здоровье пошатнулось.
Спасибо! Очень сильно поможет, будем ждать. Выздоравливайте!
От простуды пропейте настойку эхинацеи дней 10 - сильно поднимет иммунитет. Вам Юрий болеть нельзя, ваше здоровье принадлежит партии
AndreyNM вне форума Ответить с цитированием
Старый 28.11.2014, 17:59   #130
AndreyNM
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 17
По умолчанию

Юрий, а вы не рассматривали вариант разделения модулей проекта на разные файлы, а в файле проекта содержались бы только ссылки на эти файлы? Загрузка проекта изменится совсем немного - ссылки будут заменены текстом из файлов модулей. При сохранении тоже больших проблем не вижу. Модуль разбивать на lfm и pas не нужно - также сохранять всё в одном xml-файле.
Мне кажется при совместной работе над большим проектом это будет гораздо удобнее - реже придётся разрешать конфликты и т.п. проблемы. А также будет легче вносить изменения на стороне заказчика и совмещать их потом с общим проектом.
При желании такой способ сохранения можно сделать опциональным - хочешь так, а хочешь по другому. Что вы думаете по этому поводу?
AndreyNM вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что же я написал? Sibedir Свободное общение 26 04.10.2010 05:01
Я написал текстовую игру... saggy Софт 11 05.06.2010 22:32
Написал редактор карт sasha1993 Gamedev - cоздание игр: Unity, OpenGL, DirectX 8 18.07.2009 21:31
Написал прогу в паскале... deu4er Помощь студентам 2 19.11.2008 20:08
Написал бэкдор, оцените KORN Софт 7 18.11.2007 08:55