|
|
|
Компонента для выбора даты03.08.2011, 20:57. Показов 11643. Ответов 31
Метки нет (Все метки)
Есть компонента TDateTimePicker. Она меня не устраивает тем, что в поле типа Edit, которое прилагается к компоненте, нельзя ввести пустое значение. Мне нужно что-то типа следующего. Поле ввода, по типу Edit, в которое нужно ввести дату (типа "21.03.2007") и при этом чтобы была возможность ткнуть в кнопочку и чтобы при этом появился миникалендарик для выбора даты мышкой. При этом пустое поле ввода будет трактоваться таким образом, что данная настройка попросту не установлена
Вариант с дополнительной галочкой типа "учитывать или не учитывать настройку" не предлагать
0
|
|
| 03.08.2011, 20:57 | |
|
Ответы с готовыми решениями:
31
DbGrid, календарь для выбора даты Вывод времени в DBGrid из компонента DateTimePicker (без даты)
|
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|
| 03.08.2011, 23:07 | |
|
Создай свой компонент. Возьми за базовый TDateTimePicker и переопредели OnChange,
если я не ошибаюсь этот метод виртуальный.
2
|
|
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|||||||
| 04.08.2011, 00:07 | |||||||
Сообщение было отмечено как решение
Решениекомпонентов под свои нужды. Ну, а для твоей задачи сейчас набросаю код Добавлено через 30 минут
5
|
|||||||
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|
| 04.08.2011, 00:18 | |
|
Вот картинки как это выглядит.
По умолчанию в едите пусто, если пользователь нажал на кнопку вылез календарик, двойным щелчком выбрал дату.
3
|
|
|
|
||
| 04.08.2011, 08:43 [ТС] | ||
|
Код по приклеиванию даты к Edit'у я сам могу написать. Я думал, что может в этом DateTimePicker'е есть какая-то возможность отображать его без собственного Edit'а У тебя есть тут какой-то MonthCalendar, с ходу не знаю, что это но поэкспериментирую. Наличие Sleep'а естественным образом приводит к тому, что такой метод плохой. Ну не суть. Мне бы просто понять, как от стандартного DateTimePicker'а оставить только кнопку для его вызова, остальное сам сделаю
0
|
||
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|||
| 04.08.2011, 10:31 | |||
|
как раз и является TMonthCalendar, то есть нажимая на кнопочку, ты как раз его и вызываешь. в себя TEdit, TButton и TMonthCalendar. Таким образом, тебе не придётся каждый раз создавать TMonthCalendar и беспокоится о его удалении. Ладно, сейчас сделаю нормальный компонент, заодно ты увидишь как просто создавать свои компоненты.
0
|
|||
|
|
||
| 04.08.2011, 12:26 [ТС] | ||
|
0
|
||
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|||||||||||
| 04.08.2011, 15:22 | |||||||||||
|
В общем с компонентами всё очень просто:
- формируется Package, то есть длл-ка в Борладновском формате с расширением bpl, и либка, где будет тело класса, потом, когда ты будешь бросать такой компонент на форму, добавиться директива #pragma link, которая укажет добавить либу компонента к проекту - берётся за основу какой-нибудь базовый компонент-класс - добавляются новые свойства и методы или переопределяются старые Особенностью этих bpl является то, что в них есть определённый код, для интеграции в дизайнер, но этот код создаётся автоматически Wizard'ом, поэтому руками его не трогаем и не корректируем. Для человека, знающего с++, я думаю, что больше ничего объяснять не нужно. Единственное, надо добавить, что, если программист перешёл с других компиляторов на Борланд, ему следует обратить внимание на __property и на секцию __published. Это по сути тот же public. Единственное отличие, то что все члены из секции __published будут видны в инспекторе объектов. Итак, создаём наш компонент Меню -> Component -> New VCL Component Базовым классом выбираем TCustomPanel, указываем в какой Package всё это дело сохранять Пишем код к нашему новому компоненту, жмём Install.
Очень подробно про написание компонентов расписано у Архангельского. И очень доходчиво Кен Хендерсон Освой самостоятельно. Borland C++
1
|
|||||||||||
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|
| 04.08.2011, 15:32 | |
|
Пару скринов как это выглядит в диспетчере и как работает.
Вызов календаря сделал по принципу PopupMenu - так мне показалось удобнее.
0
|
|
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|
| 04.08.2011, 15:38 | |
|
П.С. Плюсы такого - своего компонента в том, что его можно дорабатывать как угодно,
они легко инсталлятся. Так что нет проблем при переустановке компа или студии. Также можно создавать невизуальные компоненты, которые будут хранилищем своих полезных функций, то есть бросил на форму такой компонент и он сам подключит все нужные хидеры и т.д.
1
|
|
|
|
||
| 04.08.2011, 15:42 [ТС] | ||
|
P.S. куда-то кнопочки +1 пропали
0
|
||
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
||||||||
| 04.08.2011, 17:00 | ||||||||
|
Это класс! И мысли относительно использования компонентов как будто ты работаешь с классом! Хочешь использовать свой компонент в исходнике без телодвижений в Борланде? Пожалуйста!
как о компоненте в дизайне. Поэтому его использовать можно только динамически. Что уже тогда говорить про инсталл, например, библиотеки QT под Visual Studio, когда у меня компиляция пол-ночи занимает
0
|
||||||||
|
|
|||
| 04.08.2011, 17:05 [ТС] | |||
|
0
|
|||
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|
| 04.08.2011, 17:17 | |
|
Принципы VCL были разработаны очень толковым программистом Андерсом Хейлсбергом,
которому Майкрософт заплатила сумасшедшие деньги, чтобы он ушёл с Борланда к ним писать C#. Чтобы не говорили о Борланде, но по удобству визуального программирования он впереди других сред лет на 10. Минус в том, что так всё автоматизировано, люди тратят больше усилий на изучение свойств компонента, думая, что этого им хватит, чем на изучение теории самого программирования. Добавлено через 7 минут Evg, ты не обижайся, но мне кажется, что в визуальном программировании у тебя очень маленький опыт. Я просто очень серьёзно занимаюсь разработкой GUI, перепробовал огромное количество библиотек GUI. Лично для тебя я рекомендую библиотеку Juce http://www.rawmaterialsoftware.com/juce.php. Она кросс-платформенная, бесплатная, там есть визуальный редактор, ты набрасываешь компоненты, а из этого всего редактор тебе генерирует код, который ты можешь редактировать как угодно. Все базовые классы с исходниками.
0
|
|
|
|
|||
| 04.08.2011, 17:22 [ТС] | |||
|
Причина простая. Я понимаю, если взять те же самые TMC и какой-нибудь профессиональный продукт, его использующий, то затраты на установку компоненты того стоят. А если взять мою никчёменную программу и мою разнесчастную компоненту - то они тогоне стоят. Просто много раз натыкался при компиляции линуксовых программ, что из-за какой-то мелочи приходится ставить целый паровоз библиотек, в итоге оказывается, что программа полный кал и просто бесит, что столько усилий потрачено на то, чтобы это дерьмо скомпилировать. Я не думаю, что мою программу будет кто-то где-то компилять, но гипотетически всегда из этого исхожу (ну мало ли кому-то понадобится). Поэтому на текущий момент мне хотелось бы решение без установки дополнительных bpl. Вариант с динамической компоненнтой меня в принципе устраивает, но при этом хотелось бы, чтобы в дизайнере это хоть как-то было видно. Дебильным решением было бы в дизайнере воткнуть Edit, а потом поверх него присобачить мою компоненту (чтобы не заниматься вычислениями координат и чтобы не корячиться в коде, если вдруг дизайн формы поменяется). Мнее дебильным решением было бы вместо Edit'а воткнуть какую-нибудь пустышку, если таковая есть. Т.е. прозрачная панелька-прямоугольничек, контуры которой хорошо видны в дизайнере форм Добавлено через 3 минуты Конкретно делаю вот эту хрень: Программа для скачивания биржевых котировок
0
|
|||
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|
| 04.08.2011, 17:23 | |
|
П.С. У тебя будет полный контроль над каждой операцией в любом компоненте вплоть до того,
что можешь хоть вообще свою перерисовку каждого компонента делать. Ещё из плюсов то, что довольно неплохой с++ код исходников. Есть чему поучиться, чего к сожалению нет в Билдере. И все исходники тщательно задокументированы. Прочитав заголовочный файл можно понять, что происходит в этой функции, а в Билдере надо пол-часа по интернету лазить, чтобы какое-то свойство компонента разведать и не факт, что найдёшь. Но, подитожив все плюсы, как не прискорбно, то, что будешь на Juce делать неделю, в Билдере сделаешь за полчаса
0
|
|
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
||
| 04.08.2011, 17:33 | ||
|
GroupProject. То есть ты привязываешь свой компонент к своему проекту. Поэтому, когда ты дашь исходник своего проекта другому человеку. Ему ничего отдельно собирать, или копировать не придётся. Это будет как единый проект.
0
|
||
|
|
||
| 04.08.2011, 20:32 [ТС] | ||
|
0
|
||
| 04.08.2011, 20:32 | |
|
Помогаю со студенческими работами здесь
20
Вывод времени типа AnsiString (формат даты-00:00:00) из многоуровнего массива в ось X компонента Chart Форматирование даты компонента DateTimePicker для SQL Servera Оператор выбора для компонента Edit Компонент для выбора даты Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|