На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Обязательно выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Этот раздел предназначен для вопросов, посвященных разработке компонентов, а также для тестирования собственных бесплатных компонентов с открытым исходным кодом.

Здесь запрещается:
1. Размещать ссылки на какие-либо коммерческие компоненты, реализующие требуемую функциональность.
2. Обсуждать и тестировать коммерческие компоненты или компоненты с закрытым кодом.
3. Давать ссылки на сайты с исходным кодом компонентов. Все тестируемые исходные коды должы быть размещены на сайте ИСХОДНИКИ.RU.
Модераторы: Rouse_, DimaBr


Страницы: (3) 1 2 [3]  все  ( Перейти к последнему сообщению )  
> TBitmap как published-свойство , Возможность инициализации в диспетчере объектов
    Цитата DimaBr @
    4.Зачем? И кому я это разрешу?
    Если компонент будет установлен в дизайнере, то любой сможет добавить новые страницы (это же TPageControl) и соответственно удалить их

    Все же это не TPageControl, а его наследник, для которого можно запретить добавление\удаление страниц и написать свой ComponentEditor для дизайна (следуя твоему же примеру ;))

    rdx0
    С другой стороны, действительно: А нужен ли такой КОМПОНЕНТ? Чем, например, фрэйм не устраивает?
      С созданием наследника от TPageControl с добавленной страницей могут возникнуть несколько сложностей непосильных начинающему программисту.
      1. С одной стороны нужно будет создавать первую страницу в конструкторе при заброске на форму и в Run-Time, а с другой стороны не создавать её, а читать из ресурса при создании компонента в режиме загрузки формы из ресурса
      2. Нужно будет запретить пользователю компонента удалить ОПРЕДЕЛЁННУЮ страницу компонента, так как порядок страниц легко поменять

      И это мы ещё не дошли до основного функционала компонента

      Цитата
      И на эту схему в дизайн тайме мне нужно накидать в нужных местах нужных размеров управляемых элементов.

      Следующий шаг - взаимодействие вашего компонента со сторонними контролами, "накиданными" на него. Не думаю что это имеет простое решение, по крайней мере так как вы это описали.
      По предоставленному описанию это очень похоже на Редактор Блок Схем. Написать такой редактор с уровнем не знания что такое Parent - невозможно.
        To Guru: Что-то я уже начинаю понимать, но оно же не отказывается, а просто не прорисовывает!
        To Mooderator:
        Плохо то, что вы пытаетесь единовременную задачу заключить в компонент, при этом не обладаете даже минимумом знаний
        Если Вам не сложно, воздержитесь от оценок IQ
        3.Пэйдж, ибо хотелось бы на соседних вкладках иметь графики, протокол событий и настройку железа
        Что мешает забросить ВАШ новоявленный компонент на TPageControl или куда либо ещё ?
        Мне нужно от него еще много чего
        4.Зачем? И кому я это разрешу?
        Если компонент будет установлен в дизайнере, то любой сможет добавить новые страницы (это же TPageControl) и соответственно удалить их
        В .exe-файле?
          Imsorry - в обращении - To moderator лишняя ·o·
            Цитата rdx0 @
            Если Вам не сложно, воздержитесь от оценок IQ

            IQ <> количество знаний Делфи

            Судя по тому, что я здесь прочитал, вам не нужен пейджконтрол. Вы не понимаете сути Компонентов в целом. Вы пишите КОНЕЧНЫЙ компонент, который не сможете использовать повторно без внесения в него изменений, а так же, плохо расширяемый. Точнее, вообще не расширяемый.

            Вам достаточно взять TWinControl как контейнер для "управляемых элементов", а уже его размещать хоть где, хоть на форме, хоть на пейдже.
            Если вы настаиваете на "нужно от него еще много чего", то сделайте TMyCustomContainer = class(TWinControl) и в нем опишите общий функционал для "еще много чего". Но это уже напрямую к компонентам не относится, это ООП.
              Мне б такой компонент... Мечта! Нужен для такой штуки: .exe можно глянуть тут
              Исходники, если надо, то тоже дам...
              Когда получится сделать, сообщите.
              Сообщение отредактировано: DimaBr -
                > rdx0
                Вы обратились сюда за советом ? Вот вам и советуют отказаться от TPageControl.
                Цитата
                а просто не прорисовывает!

                Повторяю, вы не понимаете сущности свойства Parent. Графические контролы с точки зрения Windows не существуют. Чтобы они смогли себя отрисовать им нужно ОКНО. Предоставьте TImage окно и всё начнёт рисоваться.

                Попробуйте создать то, что вы хотите без создания компонента. На пустой форме в OnCreate написать всё что вам нужно. Когда вы добьётесь нужного эффекта, вот тогда и переходите к оформлению в виде компонента, если конечно к этому времени у вас останется желание
                  To AndyBitoff:
                  Еще раз прошу прощения. мне нужна картинка, настройка ее, возможность просмотра логов, отображение записанных данных и все это на соседних листках. Чем это не пэйджконтрол?
                  To zvygin1964:
                  сорри, если там ссылка, то я ее не вижу. А когда(если :(...) получится, обязательно сообщу!
                  To DimaBr:
                  Если Я ничего не путаю, ОнКриейт - это рантайм
                    Цитата
                    To zvygin1964:
                    сорри, если там ссылка, то я ее не вижу. А когда(если :(...) получится, обязательно сообщу!

                    Ссылка была удалена, как вредоносная
                    Цитата
                    ОнКриейт - это рантайм

                    Совершенно верно. Для начала попробуйте создать TImage в режиме Run-Time и загнать в него картинку
                      Цитата rdx0 @
                      мне нужна картинка, настройка ее, возможность просмотра логов, отображение записанных данных и все это на соседних листках. Чем это не пэйджконтрол?

                      Пусть это будет пэйджконтрол. Но зачем для него создавать отдельный компонент (толком не представляя себе как его создавать, и будет ли он удобен для настройки в дизайн-тайме)? Ты так и не ответил, чем тебя не устраивает TFrame, на который можно легко и просто бросить и настроить в дизайне тот же пэйджконтрол, табшиты, картинку (можно вместе с дефолтным изображением) и прочие нужные компоненты. А уж затем этот фрейм можно вставлять в любые формы и проекты, и также легко и привычно редактировать в дизайне и сам пэйджконтрол, и все его компоненты.

                      А как ты себе представляешь создание отдельного компонента с кучей суб-компонентов, который не является наследником TFrame и TForm, и соотв-но не поддерживает автосохранение и автозагрузку настроек из dfm? Этот компонент должен создавать сам себя со всеми своими суб-компонентами в конструкторе Create, т.е. в рантайме. (Примечание: дизайнер форм при перетаскивании компонента с палитры на форму создает реальный экземпляр этого компонента вызовом его Create, поэтому первоначально все новые компоненты выглядят так, как прописано в их конструкторе). Поэтому тебе придется в конструкторе своего пэйджконтрола самому создавать все его суб-компоненты в таком виде\состоянии, в каком ты их хочешь видеть при перетаскивании твоего компонента на форму (в частности, не забывая про установку Parent-ов, чтобы эти суб-компоненты вообще отображались на экране). Как ты это собираешься делать? Ручками методом тыка? Типа написал конструктор, скомпилировал компонент, бросил на форму, не понравилось, переписал, перекомпилировал и т.д. (до посинения)? Вот тебе DimaBr и предлагает для начала "потренероваться на кошках", т.е.
                      Цитата DimaBr @
                      создать то, что вы хотите без создания компонента. На пустой форме в OnCreate написать всё что вам нужно. Когда вы добьётесь нужного эффекта, вот тогда и переходите к оформлению в виде компонента, если конечно к этому времени у вас останется желание
                      Да, "ОнКриейт - это рантайм", это именно то, что тебе нужно отработать\отладить, а затем перенести в Create твоего пэйджконтрола. (Хотя можно и непосредственно этот Create отлаживать, а в OnCreate формы просто создавать и добавлять на форму сам пэйджконтрол и смотреть, что получается).

                      Однако отладка создания компонента, это еще не все (что может отбить желание вообще его создавать и использовать). Нужно еще посмотреть насколько удобно будет редактировать св-ва его суб-компонентов в дизайн-тайме. Ведь эти субкомпоненты нельзя выделить и редактировать индивидуально, как обычные компоненты формы или фрейма. Их св-ва будут доступны для просмотра и редактирования только через раскрывающиеся (по плюсику) списки в свойствах самого пэйджконтрола. В том же TLabeledEdit раскрытие списка кучи ненужных свойств EditLabel выгдядит как-то э-э-э..., а у тебя этих субкомпонентов, судя по замыслам, будет N-е количество. Не запутаешься во всех этих "портянках" раскрытых в общем списке свойств? Или предпримешь доп.усилия для сокрытия части ненужных свойств субкомпонентов?
                        Я боюсь, что наследование от ТФрейм существенно превышает мою квалификацию...
                        Вот тебе DimaBr и предлагает для начала "потренероваться на кошках" - Д на не пустой-то форме я ушибусь, но добьюсь,желание останется, Но КАК это оформить компонентом?(Замечу в скобках, - если бы я с легкостью владел тематикой, сидел бы здесь не в спрашивающих, а в отвечающих...)
                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                        0 пользователей:
                        Страницы: (3) 1 2 [3]  все




                        Рейтинг@Mail.ru
                        [ Script execution time: 0,0423 ]   [ 17 queries used ]   [ Generated: 28.03.24, 08:04 GMT ]