как разбить TPageControl на отдельные классы?
Модератор: Модераторы
-
midisa
- новенький
- Сообщения: 95
- Зарегистрирован: 13.06.2013 18:27:53
- Откуда: Omsk
- Контактная информация:
как разбить TPageControl на отдельные классы?
Еще раз доброго времени суток уважаемые господа программисты.
Прошу меня простить, что часто задаю вопросы, но без вашей помощи мне никак нельзя (хотябы первое время).
Вопрос возможно простой, но чего то не могу сообразить как это реализовать ...
Нужно таб контрол разбить на отдельные классы. Каждая вкладка контрола должна быть в отдельном классе. Как это реализовать?
Товарищь по телефону сказал вроде бы есть элемент управления, не то панель, не то фрейм, при добавлении которого появляется отдельный класс в котором я смогу обрабатывать события элементов управления.
Попробовал поставить и то и другое, собрал проект, не появилось там никаких классов. Может эти классы нужно руками создавать и прикручивать как то хитро?
Программа планируется быть очень емкой, а интерфейс должен быть реализован именно на таб контролах, чтобы не имел визуального отличия от написанной ранее программы.
Подскажите пожалуйста, как это правильно реализовать?
Прошу меня простить, что часто задаю вопросы, но без вашей помощи мне никак нельзя (хотябы первое время).
Вопрос возможно простой, но чего то не могу сообразить как это реализовать ...
Нужно таб контрол разбить на отдельные классы. Каждая вкладка контрола должна быть в отдельном классе. Как это реализовать?
Товарищь по телефону сказал вроде бы есть элемент управления, не то панель, не то фрейм, при добавлении которого появляется отдельный класс в котором я смогу обрабатывать события элементов управления.
Попробовал поставить и то и другое, собрал проект, не появилось там никаких классов. Может эти классы нужно руками создавать и прикручивать как то хитро?
Программа планируется быть очень емкой, а интерфейс должен быть реализован именно на таб контролах, чтобы не имел визуального отличия от написанной ранее программы.
Подскажите пожалуйста, как это правильно реализовать?
Последний раз редактировалось midisa 20.06.2013 15:51:51, всего редактировалось 1 раз.
Не понял сути вопроса
Может Вы объясните задачу?.. Возможно имеется ввиду работа с табами, как с отдельными формами?
-
midisa
- новенький
- Сообщения: 95
- Зарегистрирован: 13.06.2013 18:27:53
- Откуда: Omsk
- Контактная информация:
Простите, еще не превык к паскалевскому сленгу.
Да возможно вы правы.
Мне нужно чтобы чтобы каждая вкладка (элементы на этой вкладе) описывались каждая в своем *.pas файле.
Буду признателен за вашу помощь.
Да возможно вы правы.
Мне нужно чтобы чтобы каждая вкладка (элементы на этой вкладе) описывались каждая в своем *.pas файле.
Буду признателен за вашу помощь.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
midisa, а смысл? Если уж хочется разбить файл, то для этого есть *.inc файлы, в которые можно вынести какой-то законченный кусок, а потом его подключить:
пойми, любая форма это один сложный объект... соответственно и описываться она должна как единое целое.
Код: Выделить всё
function AllocateHWnd(Method: TWndMethod): HWND;
procedure DeallocateHWnd(Wnd: HWND);
{$i classesh.inc}
implementation
uses
sysconst;
пойми, любая форма это один сложный объект... соответственно и описываться она должна как единое целое.
-
midisa
- новенький
- Сообщения: 95
- Зарегистрирован: 13.06.2013 18:27:53
- Откуда: Omsk
- Контактная информация:
Рад бы все в одном файле хранить ....
У меня программа очень большая (очень большая) на сях примерно 200 метров исходного кода. Нужно эту программу перевести под линукс, при том что нельзя менять интерфейс, чтобы пользователи не видели разницы и чтобы не обрезать функциональные возможности (в новой версии). У меня там все на табах закручено. Каждый таб в отдельном классе, клас примерно по 5000 строк кода (на сях).
В общем если я не разделю программу по отдельным формам будет очень трудно делать серфинг по коду (с этим в лазарусе тоскливо).
Ранее (примерно в 2000 году) я писал несколько приложений на языке высокого уровня (разновидность паскаля), когда проект достиг большого размера (там тоже хранилось все в одном файле), компилятор собирал программу, но программа выдавала ошибки совершенно в разных местах т.к. ей видимо не хватало памяти.
С тех пор я не косался языков высого уровня.
Сейчас приперло и заманчиво то, что многоплотформенность поддерживается.
В случае успешного написания, можно будет для виндовс собрать.
Ну если нельзя раскидать проект по разным файлам, то буду использовать лазарус для других маленьких проектов.
Спасибо всем за участие в обсуждени ... если никто не хочет по теме добавить, то тема закрыта.
У меня программа очень большая (очень большая) на сях примерно 200 метров исходного кода. Нужно эту программу перевести под линукс, при том что нельзя менять интерфейс, чтобы пользователи не видели разницы и чтобы не обрезать функциональные возможности (в новой версии). У меня там все на табах закручено. Каждый таб в отдельном классе, клас примерно по 5000 строк кода (на сях).
В общем если я не разделю программу по отдельным формам будет очень трудно делать серфинг по коду (с этим в лазарусе тоскливо).
Ранее (примерно в 2000 году) я писал несколько приложений на языке высокого уровня (разновидность паскаля), когда проект достиг большого размера (там тоже хранилось все в одном файле), компилятор собирал программу, но программа выдавала ошибки совершенно в разных местах т.к. ей видимо не хватало памяти.
С тех пор я не косался языков высого уровня.
Сейчас приперло и заманчиво то, что многоплотформенность поддерживается.
В случае успешного написания, можно будет для виндовс собрать.
Ну если нельзя раскидать проект по разным файлам, то буду использовать лазарус для других маленьких проектов.
Спасибо всем за участие в обсуждени ... если никто не хочет по теме добавить, то тема закрыта.
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
midisa, используйте фреймы
midisa писал(а):У меня там все на табах закручено. Каждый таб в отдельном классе
А что такое таб?
-
midisa
- новенький
- Сообщения: 95
- Зарегистрирован: 13.06.2013 18:27:53
- Откуда: Omsk
- Контактная информация:
а как фреймы использовать? Поставил фрейм на форму, но он не создал мне новый *.pas файл ....
Какие манипуляции с ним сделать, чтобы он создал отдельный класс?
Может быть задаю глупые вопросы, но мне пока не понятно где заканчивается граница визуального программирования в паскале ...
Добавлено спустя 2 минуты:
Простите за мой сленг, языком программистов паскаля этот элемент называется TPageControl.
Какие манипуляции с ним сделать, чтобы он создал отдельный класс?
Может быть задаю глупые вопросы, но мне пока не понятно где заканчивается граница визуального программирования в паскале ...
Добавлено спустя 2 минуты:
resident писал(а): midisa писал(а):У меня там все на табах закручено. Каждый таб в отдельном классе
А что такое таб?
Простите за мой сленг, языком программистов паскаля этот элемент называется TPageControl.
midisa писал(а):Простите за мой сленг, языком программистов паскаля этот элемент называется TPageControl.
Тогда Вы можете создать много форм и назначить каждой родителем вкладку, а вкладку включить в ваш TPageControl.
Последний раз редактировалось resident 24.06.2013 21:52:53, всего редактировалось 2 раза.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
midisa писал(а):Ранее (примерно в 2000 году) я писал несколько приложений на языке высокого уровня (разновидность паскаля), когда проект достиг большого размера (там тоже хранилось все в одном файле), компилятор собирал программу, но программа выдавала ошибки совершенно в разных местах т.к. ей видимо не хватало памяти.
Ну, сейчас не 2000 год, а 2013... вполне допустимо, что теперь эта проблема исчезла.
midisa писал(а):но мне пока не понятно где заканчивается граница визуального программирования в паскале ...
Лучше сказать, проектирования. Без написания логики вручную, толку от форм мало.
midisa писал(а):Ну если нельзя раскидать проект по разным файлам, то буду использовать лазарус для других маленьких проектов.
Можно часть логики программы, если удастся, раскидать по отдельным юнитам. Но это может потребовать рефакторинга программы.
midisa писал(а):а как фреймы использовать?
На других форумах встречал примеры, сейчас уж и не помню где. У кого-то там сотня форм использовалась или типа того
Добавлено спустя 5 минут 59 секунд:
Лекс Айрин писал(а):Можно часть логики программы, если удастся, раскидать по отдельным юнитам. Но это может потребовать рефакторинга программы.
На сколько я понял ТС-у требуется обрабатывать сообщения от разных табов, а логика здесь и не причем.
Добавлено спустя 19 минут 15 секунд:
Методом тыка и чересстрочного чтения следующей статьи испробовал фрем. Похоже тоже самое что и формы. В чем отличие не пойму, кроме того что фрейм сразу включается в форму и родителя задать ему не нужно
http://delphi-faq.ru/palitra-komponento ... entov.html
-
midisa
- новенький
- Сообщения: 95
- Зарегистрирован: 13.06.2013 18:27:53
- Откуда: Omsk
- Контактная информация:
Аааа! Все понял как с этими фреймами работать. А то я пытаюсь добавить на форму фрейм, а он мне показывает пустое окно и предлагает выбрать ...
Всем спасибо! Тему можно считать закрытой ... ну если кто то еще скажет пару полезных мыслей, то буду только рад.
Еще раз всем спасибо за помощь и особое спасибо за Ваше понимание.
Всем спасибо! Тему можно считать закрытой ... ну если кто то еще скажет пару полезных мыслей, то буду только рад.
Еще раз всем спасибо за помощь и особое спасибо за Ваше понимание.
midisa писал(а):Тему можно считать закрытой ...
Кхе, что-то у меня не совсем правильно работает.
Для примера создал два фрейма с кнопками и положил их на вкладки PageControl.
Создал обработчики нажатий кнопок с обычным сообщением ShowMessage('This is Frame');
А они обработчики не срабатывают. Хорошо, изменяю Caption кнопок, в фрейме меняются - на форме нет!
Удаляю один фрейм с формы и добавляю заново - все работает.
Это что ж получается после каждого изменения удалять и вставлять фрейм? Тогда уж лучше формы, правда я их пока здесь не пробовал.
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
Удаляю один фрейм с формы и добавляю заново - все работает.
Это есть такая баго-фича
Padre_Mortius писал(а):Это есть такая баго-фича
Нда, а я уж обрадовался
Попробовал форму вставить во вкладку как писал ранее, так если ставить
Код: Выделить всё
Form1.Align := alClient;
Но далее форма работает нормально, обработчики срабатывают. Но вот это окно с ошибкой с разворачиванием. Может что-то можно сделать? Фреймы глючат, формы вообще вызывают ошибку.
