|
|
|
Компонента для выбора даты03.08.2011, 20:57. Показов 11722. Ответов 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 Компонент для выбора даты Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|