powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Хочу поделиться - Всплывающий календарик для ввода даты.
25 сообщений из 198, страница 5 из 8
Хочу поделиться - Всплывающий календарик для ввода даты.
    #32940343
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 rafa
1. прозрачность действительно симпатично.

2. позиционирование гораздо хуже:
если переместить форму вниз так чтобы поле было практически на кромке
формы календарь открывается по прежнему вниз и становится частично обрезанным в отличие от оригинальной версии гда позиционирование зависит от возможности если есть место снизу то вниз - если нет то вверх.

3. слишком много модулей. неудобно вставлять к себе в проект.
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #32941460
srv1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
srv1Почему то при открытии календаря сразу в поле даты забивается 30.12.1899 , потом при выборе заменяется на нормальную, но если в этот момент нажать мышкой на другое место, то дата 30.12.1899 остается, при этом затирает то что было там.

Нашел, мой косяк, всё работает ОК.
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #32942223
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прозрачность, к сожалению, только для Win2000 и выше :(
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33059372
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CtrlAltВот понадобился мне календарик, взял я предложенный АлексеемК. Правда пришлось переделывать под 97 access. Наверно я не первый, так что для будущего поколения было бы желательно выложить на сайте версию и под 97.
Так вот, был замечен небольшой баг. Дело в первом дне недели. Календарь смещал все даты на день вперед(по дням недели). Это из-за того что дурацкая американская неделя начинается с воскресенья (так у меня и стоит по-умолчанию). А в коде не везде это учитывалось.
Чтоб все было нормально заработало нужно в функции Private Sub Form_Draw() дописать

...
sCtl.Caption = Format(sIntCounter, "ddd", vbUseSystemDayOfWeek )
...

сегодня немного переработал код с учетом накопившихся пожеланий
в версии для Access 2000 и выше поправил для "Интернациональных" календарей получилось так:
Код: plaintext
        sCtl.Caption = Format(sDtmStartDate + sIntCounter -  1 , "ddd", vbUseSystemDayOfWeek)

т. е. может все таки ошибка в коде версии для 98 с положением дат?

+Поправил хук с mouseup на mouseDown - что позволяет вызывать из табличных форм по событию клик
+ добавил возможность задать прозрачность предложенную rafa
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33059424
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2АлексейК
у твоего варианта есть недостаток?
при получении фокуса полем из другой формы он открывается по координатам формы

Виктошей предложен вариант исключающий этот эффект
чуть подправлено

Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
Private Sub FormPlacement2()
'новый код вычисления координат окна с использованием Top и Left Контрола

 Dim xDelta As Long, yDelta As Long, sectionTop As Long
 Dim lH As Long, lW As Long
 Dim st As String
 
 yDelta = getYDeltaFormWidth(mCallingForm)
 xDelta = getXDeltaFormWidth(mCallingForm)

On Error GoTo s1
 st = mCallingForm.Parent.Name
yDelta = -getXBorderWidth
xDelta =  0 

s1:


 
 
 If mCallingForm.CurrentView =  1  Then ' вид простой или ленточной формы
   lH = mCallingControl.Height
   lH = lH + mCallingControl.Top
   lW = mCallingControl.Left
   
  ----- не проверено

  ElseIf mCallingForm.CurrentView =  2  Then 'табличный вид
    If mCallingForm.RowHeight <  0  Then
      lH = mCallingForm.DefaultControl(acTextBox).Height
    Else
      lH = mCallingForm.RowHeight
    End If
   'вычисляем смещение по х
    lW = getSheetXPos()
----- end не проверено

  End If


  lH = mCallingForm.CurrentSectionTop + mCallingForm.WindowTop + yDelta + lH
  lW = xDelta + mCallingForm.CurrentSectionLeft + mCallingForm.WindowLeft + lW
  
  Me.Move lW, lH
  Me.Visible = True
  
'  pDeactReason = unkReason
 
  
End Sub
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33059448
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы
только часть...
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33059537
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
при получении фокуса полем из другой формы он открывается по координатам формы



Для вызова календаря из кода другой формы достаточно поставить фокус
на форму в которой должен вызываться календарь а затем на контрол
Из form2 :
Код: plaintext
1.
2.
3.
4.
Private Sub CALLCAL_Click()
Forms("form1").SetFocus
Forms("form1").sss.SetFocus
DoCmd.OpenForm "DATEPICKER"
End Sub

По идее конечно можно доработать код для такого случая чтобы календарь за форму по которой позиционирование воспринимал форму являющуюся первой по цепочке parent от контрола имеющего фокус.

Зы может я не понимаю о чем речь?
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33059555
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получение фокуса и координаты поля

не совсем то.

из формы открывается форма и в этой форме при получении полем фокуса (мышкой ) ... типа такой последовательности..
либо через подформу.... точно счас воспроизвесть не могу.

у Виктоши это проработано.
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33061194
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2АлексейК
есть проблема с привязкой форм по кординатам и "acDialog"

твой вариант не всегда открывает по полю в подчинённых формах а у Виктоши не применим для режима acDialog
как это совместить ?
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33061214
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автортвой вариант не всегда открывает по полю в подчинённых формах
ну вопервых не мой а НАШ, форумовский, моего кода там совсем чуть чуть

не понятна фраза не всегда открывает - когда именно не всегда? можешь описать конкретный случай или кинуть пример?
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33061365
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
форма 2
в полноэкранном размере переход из поля на форме

ошибку при открытии игнорировать

а открытие по координатам формы я пока не нашел у себя (всё переправил под Виктошин) но восстановлю
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33061406
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 вадя
Здрасти приехали...
этот календарь ко мне отношения не имеет
вставил туда оригинальный, поставил вызов как положено- все работает
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33061858
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это я уже понял когда отправил.....
Виктошин я вроде добил....

уберу лишнее и выложу

твой (общий) я тоже пример с "глюком" попытаюсь предоставить.
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33062042
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виктошин + мой + ....

звёздами помечено специфическое

всё в тексте календаря и модуле "календарь"

грамотные товарищи пусть проверят мож что лишнее.
сам календарь дело вкуса
там есть вопрос в конце - жду ответа
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33062178
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы
отсутствкет проверка на попадание за границы формы / экрана
это опосля
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33123029
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересная картина.
Крыша едет.

Скачал DatePickerv3
Вставил к себе в проект
Все работает, кроме одного
Строчка
Код: plaintext
CallByName mCallingForm, mCallingControl.Name & "_AfterUpdate", VbMethod
Выдает ошибку
2465:
Application-defined or object-defined error

Проверял, mCallingForm.Name выдает мне имя моей формы, mCallingControl.Name - имя моего контрола.

Office XP, SP1,2,3
куда еще копнуть?
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33123260
АКHome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
'Library VBA
' C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6.DLL
' Visual Basic For Applications
VBA.Interaction.CallByName mCallingForm, mCallingControl.Name & "_AfterUpdate", VbMethod

первый аргумент объект - форма
второй - строка имя имеющейся в ФОРМЕ ПУБЛИЧНОЙ ПРОЦЕДУРЫ

процедура по умолчанию создается приватной - наверное упустил
эта строка в календаре специально в блоке с игнорированием ошибок
потому что этой процедуры может в каких то случаях не быть
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33123449
1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совет Автора на письмо об этой ошибке:
"тогда фде + f11 tools options general поставить break on unhandled errors"
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33123495
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все именно так, как говорит AKHome
С этими поправками все работает на ура.

Вопрос (риторический): почему бы майкрософту не напомнить в хелпе на странице с описанием CallByName() про то, что можно вызывать только публичные функции?

Еще раз данке.
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33123603
AKHome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПубличнаЯ - приватная это основы программирования,
на всякий случай указал в комментариях примера использования, не помогло ведь
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33123735
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты бы еще сказал - мануал читать!
Пардон, большу не буду оффтопить.
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33200792
kanalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странную вещь обнаружил:
Если форма, в которой установлен datepicker открыта в режиме ReadOnly или поле с датой, для которого вызывается календарь установлено в Locked = True, то значение все равно изменяется. Причем заносится и в базу, несмотря на ReadOnly формы.
Предлагаю решение - изменить Function CloseForm() следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Function CloseForm()
        On Error Resume Next
        If IsDate(mAffectedDate) Then
            Call SaveSetting(Left(CurrentProject.Name, _
                             Len(CurrentProject.Name) -  4 ), _
                             "datepicker", "LastEntredDate", _
                             mAffectedDate)
            'Добавить условие перед установкой возвращаемого значения
            If Not mCallingControl.Locked And _
               mCallingControl.Parent.AllowEdits Then
                mCallingControl.Value = mAffectedDate
            End If
        End If
    DoCmd.Close acForm, Me.Name
End Function
Проверялось на mdb, adp AccessXP, WinXP
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33200959
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ответил в почту
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33208440
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://am.rusimport.ru/MSAccess/topic.aspx?id=477
Простенький календарик, основанный на стандартном Active X.
Возможности:
- позиционирование под полем (можно над)
- возможность выключения щелчком мыши в не формы календарика.

Фишка в том, что все реализовано без API.
...
Рейтинг: 0 / 0
Хочу поделиться - Всплывающий календарик для ввода даты.
    #33256020
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поступило предложение сделать релиз календаря с учетом специфики производственного календаря то есть учитывать праздничные дни и переносы выходных из за праздничных дней

очень скоро выложу релиз.


пока не решен вопрос по экспорту таблички с данными в проект ADP и MDB
может у кого есть наработки как можно универсально быстро и красиво экспортировать табличку в ADP и MDB

- проверить что таблички нет
- создать таблицу
- залить тестовые данные

пока думаю в сторону сгенерить SQL скрипты

ищутся хорошие идеи
...
Рейтинг: 0 / 0
25 сообщений из 198, страница 5 из 8
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Хочу поделиться - Всплывающий календарик для ввода даты.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]