|
Поле для задания времени.
|
|||
---|---|---|---|
#18+
Ну т.е. чтоб понять чего хочу. Делаем на часах (в трее) двойной щелчок мышью. Появляется стандартная панель Свойства:Дата и время На вкладке "Дата и время" в области "Время" под часами есть этот "контрол". Там либо 3 зоны: hh : mm : ss ( 4 : 10 : 59 ) Либо 4 зоны: 4 : 10 : 59 AM Ну, ясно что формат от национальных настроек OS зависит. Значение каждой зоны меняется независимо (можно стрелками, можно ручками) и застраховано от некорректного ввода. У меня стоит задача: 1) при выводе формы отобразить тек.время (естественно тек. нац. формат) 2) предложить пользователю задать там "выберете время в промежутке следующие 24 часа" (т.е. дата сегодня-завтра подразумевается) 3) запомнить чего пользователь выбрал. Писать чего-либо подобное самому желания ясно нет (если грамотно и красиво то умучаешься). Есть ли готовое (стабильное на уровне OS) решение, которым можно воспользоваться из VB? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2011, 04:37 |
|
Поле для задания времени.
|
|||
---|---|---|---|
#18+
DTPicker но он 1) только Common Controls-6 (не дружит с манифестами и стилями) 2) (-2) а не (-1) лишняя OCX, хотя и так ясно что посему в этом виде не приемлим. API? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2011, 05:06 |
|
Поле для задания времени.
|
|||
---|---|---|---|
#18+
На API версия такая ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2011, 08:17 |
|
Поле для задания времени.
|
|||
---|---|---|---|
#18+
В виде UserControl, недоделанная версия ещё ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2011, 08:25 |
|
Поле для задания времени.
|
|||
---|---|---|---|
#18+
SysMonth календарь, может пригодится ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2011, 08:26 |
|
Поле для задания времени.
|
|||
---|---|---|---|
#18+
VSVLADНа API версия такая Кажется то что нужно. С манифестами дружит (следовало ожидать). Данный код с ходу выводит значение(я) (хоть как-то) Код: plaintext 1. 2. 3.
Пока быстрые вопросы (интересует только в DTS_TIMEFORMAT): 1) Как быстро вернуть Date-Time в формате as Date (а-ля ##) т.е. без игр с SerialDate/Time, форматами и т.п. /если возможно/ 2) DTS_TIMEFORMAT всегда возвращает тек. дату? Дима"выберете время в промежутке следующие 24 часа" Т.е. если сейчас 15:00, а user выбрал 11:15 (AM), то оценить что now больше выбранного и ручками прибавить 1 день? Так получается? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2011, 15:02 |
|
Поле для задания времени.
|
|||
---|---|---|---|
#18+
Ну вот как-то так только получается: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
NationalDT - тек. полный формат дата-время AccessDT -для экспорта в БД Access в теле SQL-запроса. Вроде все корректно фурычит. Проверку на ошибки в GetMyRegionalDateTime думаю можно не делать, ибо контрол сам себя всегда проверяет на корректность ввода. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2011, 15:55 |
|
Поле для задания времени.
|
|||
---|---|---|---|
#18+
VSVLADНа API версия такая VSVLAD, спасибо. Пристыковываю потихоньку. Правильно ли я понимаю, что если мне не надо отслеживать всякие change-ы, то могу 1) выкинуть WithEvents Код: plaintext
2) выкинуть SetDTPProc/DelDTP Код: plaintext 1. 2. 3. 4.
3) и соответственно полностью выкинуть модуль с сабклассингом mDateTimePicker (который не класс а так просто модуль). В среде VB этот сабклассинг глючит минимум при закрытии кнопкой "стоп" среды (у меня там есть еще combo). В exe вроде не глючит, но испытателем быть не хочу, полезного толку от сабклассинга для моей задачи вроде не вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 05:31 |
|
Поле для задания времени.
|
|||
---|---|---|---|
#18+
В принципе да, если не нужны события. Глючит в среде, так как нельзя закрыть приложение, не подменив на прошлую процедуру окна. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 11:44 |
|
Поле для задания времени.
|
|||
---|---|---|---|
#18+
Ну вроде с этим разобрался. А вот похожие вопросы общего характера. Например нужен Цифровой picker. Стрелки вниз-вверх, значение меняется от 1 до 100. UpDown теоретически понятно, а вот готового чего-то нет? Т.е. общая задача страхования корректности вводимой информации в том же текстовом поле. Типичные задачи: 1) могут быть только целые цифры; от min до max (+напр. стрелки вверх/вниз) 2) длина вводимой информации не превышает N текстовых символов 3) в это поле вводится адрес e-mail ну и т.п. Каждый раз пишешь набор каких-нибудь тупых и абсолютно неинтересных малоинтеллектуальных процедур/обработок (для каждого "контрола"), так сказать набор затычек, в завис. от вложенных усилий это более менее защищает от дураков, но получается не всегда законченно и красиво... Ну, основная задача, чтобы если уж введено некорректно, то прога "подправит" на каком-то этапе... и самое главное чтоб не вылетела из за "дурацких" данных. Т.е. о чем это я... В случае с DTPicker имеем полную защиту "от дурака", причем даже на "визуальном уровне", т.е. "дурак" даже напечатать "буквы" вместо скажем "минут" не может, или скажем сделать некорректный Copy-Paste. Вот так бы для всего остального... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 17:10 |
|
Поле для задания времени.
|
|||
---|---|---|---|
#18+
обычно делают сови собственные usercontrols для таких дел или используют готовые платные/бесплатные ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 17:13 |
|
Поле для задания времени.
|
|||
---|---|---|---|
#18+
А нет ничего готового на тему: >UpDown >API >могут быть только целые цифры; от min до max ;+ стрелки вверх/вниз >На API версия такая (как с DTPicker с модулем класса) Ибо этот DTPicker дюже понравился, а описанную выше задачу "с циферками" решаю постоянно. UpDown мне давно посоветовали, но ленюсь: либо просто делаю текстовое поле, а в одном случае с коротким VScrollBar извратился ("верх совершенства-изввращенства" так сказать). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 17:26 |
|
Поле для задания времени.
|
|||
---|---|---|---|
#18+
updown вообще просто прикручивается к textbox-у. потренируйся, не забудь locked=true у texbox-а выставить, тогда только в диапазоне стрелочек будет значение меняться ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 17:30 |
|
Поле для задания времени.
|
|||
---|---|---|---|
#18+
Konst_Oneupdown вообще просто прикручивается к textbox-у. потренируйся, не забудь locked=true у texbox-а выставить, тогда только в диапазоне стрелочек будет значение меняться Ну да, прикручивается то прикручивается. Попробовал с Common Controls 2- 5.0 Манифесты-ДА, но Common Controls 2 - я использую только Common Controls 1 - 5.0 Лишняя ocx, неохота по стратегическим соображениям. Т.е. смотреть в сторону API... По поводу locked=true, ну это не дает возможности редактирования "ручками". А анализ подобных конструкций наводит на след. требования: 1) User должен иметь возможность редактировать Textbox ручками; 2) Может вводить только цифры, причем если ввод приведет к выходу из диапазона то он не осуществляется 3) Ввод "букв" не осуществляется, как вариант вывод примечания типа "Unacceptable Character : You can only type a number here" 4) При нажатии стрелка вниз/вверх (на клавиатуре находясь в Textbox) значение меняется и стрелки UpDown "авто" "самонажимаются" 5) Введенное в Textbox корректное значение автосинхронизировано со значением UpDown 6) Через Copy-Past например можно вставить "слово", но длина его не более длины числа max (в UpDown), быстро "выправляется" при дергании UpDown и никоим образом не запоминается (ну запоминается понятно Value(UpDown)). Ну т.е. видите, целая "система" по типу cDateTimePicker, лучше чтоб было реализовано как "класс" наверно. Вот такой "готовый" и хотелось бы иметь. В приведенном мной примере с "коротким VScrollBar извратился" все это худо-бедно реализовано, но как понимаете "на карачках", и каждый раз так "реализовывать" умучаешься и лениво становится, да и ошибку ляпануть на раз-два. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 19:24 |
|
Поле для задания времени.
|
|||
---|---|---|---|
#18+
Контролы основаны на классах и юзер контролах на API, мне как бы ближе =) Многие готовые контролы есть в этой теме здесь А также если интересует про UpDown: Тут Тут и Тут ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 19:47 |
|
Поле для задания времени.
|
|||
---|---|---|---|
#18+
VSVLADА также если интересует про UpDown: Тут Тут и Тут Поигрался, немного подоводил "по понятиям" (проект приложен). В использовании API-UpDown проблем не вижу. Но вот к чему его привязывать? К TextBox-VB? Или к Edit-API. Там у меня в проекте 2 варианта: 1. Edit-API Минусы: 1) по умолчанию приобретает цвет родит. контрола (не белый). В одном из примеров его окрашивают в белый через сабклассинг, но это издержки извращение. Я могу задать цвет окон=красный, а этот останется "белой вороной". 2) кажись он фокуса по TAB не ловит. 3) Не могу использовать стандартные фичи VBTextbox, к которым привык, например ограничить длину поля двумя полями. Изучать API-Textbox теорию желания нет. Короче API-текстбокс я однозначно НЕ ХОЧУ и НЕ БУДУ. 2. VB-textbox Что сделал: 1) запретил ввод "не цифр" Or ES_NUMBER 2) запретил ввод больше 2-х символов (VB методами) 3) стрелки в Textbox вверх-вниз приводят к "имитации нажатия на UpDown" 4) меняется значение колесиком мыши Что не сделал и чего хотелось бы и не знаю как: 1) При привязке UpDown ширина Textbox уменьшается, UpDown располагается вне рамки справа. А хотелось бы ВПИСАТЬ В РАМКУ (как в Edit-API). Т.е. какие-то стили vb-textbox отличаются. Игрался безрезультатно. 2) При нажатии непосредственно на кнопки UpDown выделяется весь текст в Edit-API, а в VB-Textbox - не выделяется. Хочу чтоб ВЫДЕЛЯЛСЯ . Ну собственно все "претензии". ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 03:41 |
|
Поле для задания времени.
|
|||
---|---|---|---|
#18+
Дмитрий772) При нажатии непосредственно на кнопки UpDown выделяется весь текст в Edit-API, а в VB-Textbox - не выделяется. Хочу чтоб ВЫДЕЛЯЛСЯ . Это худо-бедно решается сабклассингом апдауна: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
C "вписать в рамку" в примерах есть вариант с "запихиванием всего" в Picturebox с контуром, но что-то он мне не внушает доверия. Грубо и на стилях подведет скорее всего. Накладывать API-UpDown поверх vb-текстбокса (без автопривязки слева) удовольствие ниже среднего, тоже не прокатит. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 06:00 |
|
|
start [/forum/topic.php?fid=60&msg=37137946&tid=2158919]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 325ms |
total: | 451ms |
0 / 0 |