Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста новичку. Нужно создать календарь. / 25 сообщений из 25, страница 1 из 1
03.05.2007, 21:52
    #34503506
salvador
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста новичку. Нужно создать календарь.
Сделал интерфейс, а дальше - проблема: не знаю с чего начинать. Это моя первая программа, подскажите пожалуйста как и что мне использовать. Хотя бы наведите на мысль.
...
Рейтинг: 0 / 0
04.05.2007, 01:52
    #34503681
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста новичку. Нужно создать календарь.
Использовать готовый контрол календарь и не изобретать велосипед :). Находится он в библиоеке Windos Common controls2-SP4 кажется. MsComct2.
...
Рейтинг: 0 / 0
04.05.2007, 02:16
    #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
04.05.2007, 02:19
    #34503691
VipFedor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста новичку. Нужно создать календарь.
Magnus23Использовать готовый контрол календарь и не изобретать велосипед :). Находится он в библиоеке Windos Common controls2-SP4 кажется. MsComct2.

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

Данный календарь имеет значительные недостатки.
Из того, что я помню - не обновляется с наступлением новой даты, и собственным таймером это не исправишь...
Недостатки можно найти практически в любом контроле. Но это не повод чтобы все писать самому. А исправить при желании можно что угодно. Там строго говоря не календарь а DatePicker, т.е. его использование подразумевает наличие дополнительного кода. Все ж лучше чем писать с нуля.
...
Рейтинг: 0 / 0
05.05.2007, 08:03
    #34506557
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста новичку. Нужно создать календарь.
...
Рейтинг: 0 / 0
23.05.2007, 21:54
    #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
24.05.2007, 09:17
    #34547435
salvador
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста новичку. Нужно создать календарь.
Всё что сделал зарботало. Только до сих пор не могу сообразить как определить последний день месяца?
Выбор месяца и года находятся в другой форме, так что каким-то путём надо чтобы переменные передавались из одной формы в другую???
...
Рейтинг: 0 / 0
24.05.2007, 09:49
    #34547552
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста новичку. Нужно создать календарь.
в форме передающий параметр об. глоб.переменную
Public lastDay as Long


Sub()
lastDay=1
end sub


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

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

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

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

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

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


Sub()
lastDay=1
end sub


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

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

В принципе тоже можно сделать и в модуле формы...
тогда код будет как я писал выше
...
Рейтинг: 0 / 0
24.05.2007, 11:17
    #34547917
salvador
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста новичку. Нужно создать календарь.
Написал Имя формы. переменная сама появилась. Значение 0. Не передаётся и всё, хоть тресни(
...
Рейтинг: 0 / 0
24.05.2007, 11:22
    #34547932
gjghjc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста новичку. Нужно создать календарь.
Еще раз. Ты ее где объявляешь???
...
Рейтинг: 0 / 0
24.05.2007, 11:24
    #34547946
salvador
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста новичку. Нужно создать календарь.
Пробовал и в модуле и в форме в разделе General. Эффект один и тот же.
...
Рейтинг: 0 / 0
24.05.2007, 11:32
    #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
24.05.2007, 20:39
    #34549748
salvador
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста новичку. Нужно создать календарь.
Спсибо огромное с значениями вроде подразобрался. Наступил на новые грабли. Значение переменной не меняется при щелчках, т. е. я щёлкаю допустим год2006 a=2006, потом щёлкаю год2007, переменной по идее должно присвоиться значение 2007, но оно остаётся тем же.
...
Рейтинг: 0 / 0
24.05.2007, 23:19
    #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
25.05.2007, 19:49
    #34552723
salvador
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста новичку. Нужно создать календарь.
Спасибо огромное, VipFedor. С переменными я разобрался. А вот за последний день месяца отдельное спасибо, удружил...целую неделю голову ломал никак не мог придумать.
...
Рейтинг: 0 / 0
25.05.2007, 20:50
    #34552796
salvador
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста новичку. Нужно создать календарь.
VipFedor, если тебе не будет трудно, объясни пожалуйста как работают эти 2 строчки:
If Year(Date) Mod 4 = 0 Then: MonthDays = 29
If Year(Date) Mod 4 <> 0 Then: MonthDays = 28
...
Рейтинг: 0 / 0
25.05.2007, 21:00
    #34552806
gjghjc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста новичку. Нужно создать календарь.
Если год делится на 4 без остатка значит он високосный и в феврале 29 дней
иначе год простой и в феврале будет 28 дней.

Mod Operator

Used to divide two numbers and return only the remainder.

Syntax

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


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