powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста новичку. Нужно создать календарь.
25 сообщений из 25, страница 1 из 1
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34503506
salvador
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал интерфейс, а дальше - проблема: не знаю с чего начинать. Это моя первая программа, подскажите пожалуйста как и что мне использовать. Хотя бы наведите на мысль.
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34503681
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использовать готовый контрол календарь и не изобретать велосипед :). Находится он в библиоеке Windos Common controls2-SP4 кажется. MsComct2.
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34503689
VipFedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот мои рекомендации:
1. Разместил бы 2 элемента ListBox (месяц/год)
2. Создал бы массив элементов Label(i) в количестве 37 штук и разместил бы их ниже
ListBox поочередно Label(0)...Label(36) в 7 столбцов(где каждый столбец день недели) и 6 строк. В последней строке достаточно поместить только 2 элемента: Label(35) и Label(36) До остальных очередь не дойдет при максимальном количестве дней в месяце - 31, с учетом того, что 1 число этого месяца - воскресенье и будет расположено в Label(6) (Пример Июль - 2007 года). В этом случае 31 число у нас окажется как раз в Label(36). Думаю идея ясна.
Все элементы массива Label должны быть не видимы.
3. Из расчетов потребуется определить каким днем будет первое число месяца. Потребуются такие функции VB - WeekDay, WeekDayName, Month и схожие.
Как только находите день первого числа месяца, то помещаете его в нужную ячейку (например для Июля 2007 - Воскресенье
- Label(6)) Делаете ячейку видимой и забиваете все стоящие за ней циклом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
DayIndex =  1 
FirstDayOfMonth = Label( 6 )
For i = FirstDayOfMonth To [Количество дней в месяце]
      Label(i).Visible = True 'Делаем ячейку видимой
      Label(i).Caption = DayIndex
      DayIndex = DayIndex +  1 
Next i
4. При загрузки проекта забиваете ListBox названиями месяцев и годов и устанавливаете текущее значение от системного времени. Год:
Код: plaintext
1.
ListBoxYear - Year(Date)
ListBoxMonth - MonthName(Month(Date))

5. Ну и обрабатываете выборку другого месяца/года через:
Код: plaintext
1.
ListBoxYear_Click
ListBoxMonth_Click

Вроде все.
Вот такое краткое пособие :)

Пример моей программы со схожей реализацией работы календаря, можно посмотреть тут:
http://eo.yastrebov.biz/screen.php

Удачи в Ваших начинаниях.
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34503691
VipFedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Magnus23Использовать готовый контрол календарь и не изобретать велосипед :). Находится он в библиоеке Windos Common controls2-SP4 кажется. MsComct2.

Данный календарь имеет значительные недостатки.
Из того, что я помню - не обновляется с наступлением новой даты, и собственным таймером это не исправишь...
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34504673
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VipFedor Magnus23Использовать готовый контрол календарь и не изобретать велосипед :). Находится он в библиоеке Windos Common controls2-SP4 кажется. MsComct2.

Данный календарь имеет значительные недостатки.
Из того, что я помню - не обновляется с наступлением новой даты, и собственным таймером это не исправишь...
Недостатки можно найти практически в любом контроле. Но это не повод чтобы все писать самому. А исправить при желании можно что угодно. Там строго говоря не календарь а DatePicker, т.е. его использование подразумевает наличие дополнительного кода. Все ж лучше чем писать с нуля.
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34506557
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34546995
salvador
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем огромное, хоть что-то с места сдвинулось. Но опять же куча вопросов и банальные грабли(
Вот мой код, почти всё на что меня хватило:
Option Explicit
Dim MyDate As Date
Dim FirstDayOfMonth
Dim DayIndex
Dim i As Integer
Dim mesjac As Integer
Dim god As Integer

Private Sub Form_Load()
DayIndex = 1
MyDate = CDate(1 & "/" & mesjac & "/" & god)
Select Case Weekday(MyDate, vbMonday)
Case 1
FirstDayOfMonth = FormMounth.Label(0)
Case 2
FirstDayOfMonth = FormMounth.Label(1)
Case 3
FirstDayOfMonth = FormMounth.Label(2)
Case 4
FirstDayOfMonth = FormMounth.Label(3)
Case 5
FirstDayOfMonth = FormMounth.Label(4)
Case 6
FirstDayOfMonth = FormMounth.Label(5)
Case 7
FirstDayOfMonth = FormMounth.Label(6)
End Select
For i = FirstDayOfMonth To 42
FormMounth.Label(i).Visible = True
FormMounth.Label(i).Caption = DayIndex
DayIndex = DayIndex + 1
Next i
End Sub
Возникли такие вопросы: Как определить последний день месяца? Первый определил, хотя всё равно ничего не работает.
Как сделать так, чтобы при событии Click переменной присвоилось значение, которое было бы видно во всех формах проекта?
Ломаю голову которую неделю. Помогите, иначе совсем сломаюсь.
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34547435
salvador
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё что сделал зарботало. Только до сих пор не могу сообразить как определить последний день месяца?
Выбор месяца и года находятся в другой форме, так что каким-то путём надо чтобы переменные передавались из одной формы в другую???
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34547552
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в форме передающий параметр об. глоб.переменную
Public lastDay as Long


Sub()
lastDay=1
end sub


в другой форме получай данные из формы

Debug.Print ИмяВормы.lastDay
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34547553
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
form2.perem1 = form1.perem1....
где form2 и form1 Name твоих форм....

можно еще так
Me.perem1 = form2.perem2

Вобщем набери в редакторе кода Name твоих форм поставь точку и посмотри какие там будут интересные вещи появляться.... :)
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34547717
salvador
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gjghjcform2.perem1 = form1.perem1....
где form2 и form1 Name твоих форм....

можно еще так
Me.perem1 = form2.perem2

Вобщем набери в редакторе кода Name твоих форм поставь точку и посмотри какие там будут интересные вещи появляться.... :)
Не получается пишет, мол Outside Procedure(
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34547730
salvador
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TIKOв форме передающий параметр об. глоб.переменную
Public lastDay as Long


Sub()
lastDay=1
end sub


в другой форме получай данные из формы

Debug.Print ИмяВормы.lastDay
Не получается. Дело в том, что в форме-источнике присвоение знач-я переменной располагается внутри события Click.(
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34547731
salvador
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может я что-то не так делаю???
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34547848
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
salvadorМожет я что-то не так делаю???
без разницй в каком событии главное объявить глоб. переменую
присвоить значение
и потом обращаться к ней через
ИмяФормы.Переменная
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34547864
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда добавь модуль и пропиши в нем
Код: plaintext
1.
[/src]Public Perem1 as String
[SRC vba]
В этом случае переменная видна будет по всему проекту и без Form1 и Form2

В принципе тоже можно сделать и в модуле формы...
тогда код будет как я писал выше
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34547917
salvador
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал Имя формы. переменная сама появилась. Значение 0. Не передаётся и всё, хоть тресни(
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34547932
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз. Ты ее где объявляешь???
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34547946
salvador
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал и в модуле и в форме в разделе General. Эффект один и тот же.
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34547998
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм....
Public FormCapt As String ' Это должно быть в General UserForm1

Private Sub Form1_Load()
FormCapt = "ВАСЯ!"
End Sub

Код кнопки на форме Form2

Private Sub CommandButton1_Click()
MsgBox Form1.FormCapt
End Sub

Только что проверил... РАБОТАЕТ!!!!
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34549748
salvador
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спсибо огромное с значениями вроде подразобрался. Наступил на новые грабли. Значение переменной не меняется при щелчках, т. е. я щёлкаю допустим год2006 a=2006, потом щёлкаю год2007, переменной по идее должно присвоиться значение 2007, но оно остаётся тем же.
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34549943
VipFedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
salvadorТолько до сих пор не могу сообразить как определить последний день месяца?
Выбор месяца и года находятся в другой форме, так что каким-то путём надо чтобы переменные передавались из одной формы в другую???

Определить последний день месяца можно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
'**********************Copyright © Fedor Yastrebov*************************
'***********************http://www.yastrebov.biz**************************
Select Case Month(Date) 'Вместо Date можно всунуть переменную.
Case Is =  1 ,  3 ,  5 ,  7 ,  8 ,  10 ,  12 
MonthDays =  31 
Case Is =  2 
If Year(Date) Mod  4  =  0  Then: MonthDays =  29 
If Year(Date) Mod  4  <>  0  Then: MonthDays =  28 
Case Else
MonthDays =  30 
End Select

For i = FirstDayOfMonth To MonthDays + FirstDayOfMonth -  1 
      Label(i).Visible = True 'Делаем ячейку видимой
      Label(i).Caption = DayIndex
      DayIndex = DayIndex +  1 
Next i
'**********************Copyright © Fedor Yastrebov*************************
'***********************http://www.yastrebov.biz**************************


salvadorЗначение переменной не меняется при щелчках, т. е. я щёлкаю допустим год2006 a=2006, потом щёлкаю год2007, переменной по идее должно присвоиться значение 2007, но оно остаётся тем же.

Меняется. Обрабатывай событие Объект_Click(), а не Объект_Change()
Например:

Код: plaintext
Private Sub ComboYears_Click()

salvadorнадо чтобы переменные передавались из одной формы в другую

Можно передавать переменные в качестве параметров процедуре обработки:

Форма 1:
Код: plaintext
1.
2.
3.
Public Sub Obrabotka(Peremennaya_1 as Date, Peremennaya_2 as Date)
'...тут мучаешь эти переменные
End Sub

Форма 2:
Код: plaintext
1.
Form1.Obrabotka(a,b) 'Где a,b твои переменные!

Надеюсь тебе это поможет! ;)
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34552723
salvador
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо огромное, VipFedor. С переменными я разобрался. А вот за последний день месяца отдельное спасибо, удружил...целую неделю голову ломал никак не мог придумать.
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34552796
salvador
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VipFedor, если тебе не будет трудно, объясни пожалуйста как работают эти 2 строчки:
If Year(Date) Mod 4 = 0 Then: MonthDays = 29
If Year(Date) Mod 4 <> 0 Then: MonthDays = 28
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34552806
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если год делится на 4 без остатка значит он високосный и в феврале 29 дней
иначе год простой и в феврале будет 28 дней.

Mod Operator

Used to divide two numbers and return only the remainder.

Syntax

result = number1 Mod number2
...
Рейтинг: 0 / 0
Помогите, пожалуйста новичку. Нужно создать календарь.
    #34552833
salvador
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gjghjcЕсли год делится на 4 без остатка значит он високосный и в феврале 29 дней
иначе год простой и в феврале будет 28 дней.

Mod Operator

Used to divide two numbers and return only the remainder.

Syntax

result = number1 Mod number2
Спасибо, теперь мой ум прояснился)))
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста новичку. Нужно создать календарь.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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