Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2011, 18:41   #1
pooli
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 45
По умолчанию формат (по цвету) выходных дней в FlexGrid

на форме flexgrid, при выборе диапазона календаря в сетку вписываются дни недели.
Подскажите как организовать выделение цветом (в шапке) выходных дней?
Изображения
Тип файла: jpg grid.jpg (74.1 Кб, 126 просмотров)
pooli вне форума Ответить с цитированием
Старый 21.03.2011, 22:48   #2
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от pooli Посмотреть сообщение
на форме flexgrid, при выборе диапазона календаря в сетку вписываются дни недели.
Подскажите как организовать выделение цветом (в шапке) выходных дней?
Здравствуйте,pooli

красить грид можно примерно так

Код:
Private Sub Кнопка1_Click()
With Me.MSFlexGrid0
For i = 1 To 21 Step 7
.Row = 0
.Col = i
.CellBackColor = 65535
.Col = i + 1
.CellBackColor = 65535
Next
End With
End Sub
Данный код раскрасит нулевую строку грида......
так как Ваш красивый скрин не дает четкого определения даты, то и ответ получился приблизительным, но общий принцип я Вам показал.
С уважением, Дмитрий.
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 21.03.2011, 23:32   #3
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Код:
Private Sub Кнопка1_Click()
Dim x&, c&, nd&
nd = Format(Me.Поле6, "w", vbMonday)
If nd = 6 Then x = 1: c = 1
If nd = 7 Then x = 1: c = 0
If nd < 6 Then x = 7 - nd: c = 1
On Error Resume Next
With Me.MSFlexGrid0
For i = x To .Cols Step 7
.Row = 0
.Col = i
.CellBackColor = 65535
.Col = i + c 
.CellBackColor = 65535
If nd = 7 Then c = -1
Next
End With
End Sub
поле6 - значение стартовой даты
Этот способ если в гриде не дата а только число, если в гриде дата, то можно красить пройдясь по ячейкам в цикле и определяя день недели - если больше пяти то красим.

ну если не разберетесь , спрашивайте
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234

Последний раз редактировалось R Dmitry; 22.03.2011 в 01:39.
R Dmitry вне форума Ответить с цитированием
Старый 22.03.2011, 00:38   #4
pooli
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 45
По умолчанию

так строится сетка...

Код:
Sub blankGrid() 'ïóñòàÿ ñåòêà

   Dim db As Database, rst As Recordset, datX As Date
   Dim r, c As Integer
   
   If IsNull(Int(ocxStartDate.Value)) Then
      Message vbCrLf & "Íå ââåäåíà äàòà íà÷àëà ïåðèîäà ðàçìåùåíèÿ"
      Exit Sub
   End If
   If IsNull(Int(ocxEndDate.Value)) Then
      Message vbCrLf & "Íå ââåäåíà äàòà îêîí÷àíèÿ ïåðèîäà ðàçìåùåíèÿ"
      Exit Sub
   End If
   If Int(ocxStartDate.Value) > Int(ocxEndDate.Value) Then
      Message vbCrLf & "Äàòà íà÷àëà ïåðèîäà ðàçìåùåíèÿ íå äîëæíà áûòü áîëåå äàòû îêîí÷àíèÿ ðàçìåùåíèÿ"
      Exit Sub
   End If
   
   ocxGrid.Cols = Int(ocxEndDate.Value) - Int(ocxStartDate.Value) + 2
   ocxGrid.Rows = 2
   ocxGrid.MergeRow(0) = True
   ocxGrid.Row = 0:                        ocxGrid.Col = 0
   ocxGrid.RowSel = 1:      ocxGrid.ColSel = ocxGrid.Cols - 1
   ocxGrid.Font.Bold = True
   ocxGrid.CellAlignment = flexAlignCenterCenter
   
   For c = 1 To ocxGrid.Cols - 1
      ocxGrid.ColWidth(c) = 400 'ðàçìåð ñèìâîëîâ â øàïêå
      ocxGrid.TextMatrix(0, c) = Format(Int(ocxStartDate.Value) + c - 1, "mmmm yyyy") & "ã."
      ocxGrid.TextMatrix(1, c) = Day(Int(ocxStartDate.Value) + c - 1)
   Next

   If IsNull(StationID) Then
      Message vbCrLf & "Íå ââåäåíà ñòàíöèÿ"
      Exit Sub
   End If
   
   Set db = CurrentDb
   ocxGrid.Rows = Nz(DCount("[Time]", "[qryGridTimes]", "[StationID]=" & StationID)) + 2
   If ocxGrid.Rows = 2 Then
      Message vbCrLf & "Âíèìàíèå!" & vbCrLf & "Íà âûáðàííóþ ñòàíöèþ íå ââåäåí øàáëîí ñåòêè!"
      Exit Sub
   End If
   
   ocxGrid.Row = 2:                        ocxGrid.Col = 0
   ocxGrid.RowSel = ocxGrid.Rows - 1:      ocxGrid.ColSel = ocxGrid.Cols - 1
   ocxGrid.CellAlignment = flexAlignCenterCenter
   ocxGrid.Value = ""
   
   ocxGrid.Row = 0:                        ocxGrid.Col = 0
   ocxGrid.RowSel = ocxGrid.Rows - 1:    ocxGrid.ColSel = 0
   ocxGrid.Font.Bold = True
   
   ocxGrid.Row = 2:                        ocxGrid.Col = 1
   ocxGrid.RowSel = ocxGrid.Rows - 1:      ocxGrid.ColSel = ocxGrid.Cols - 1
   ocxGrid.CellBackColor = RGB(255, 255, 255)
   
   Set rst = db.OpenRecordset("SELECT * FROM [qryGridTimes] WHERE [StationID]=" & StationID, dbOpenDynaset)
   r = 1
   Do While Not rst.EOF
      r = r + 1
      ocxGrid.TextMatrix(r, 0) = Format(rst!time, "hh:mm")
      rst.MoveNext
   Loop
   
   rst.Close

   disableCells
   
   bUpdated = False
   
End Sub
pooli вне форума Ответить с цитированием
Старый 22.03.2011, 00:53   #5
pooli
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 45
По умолчанию

первый способ подходит только он красит пятницу и субботу, а нужно субботу,воскресенье
pooli вне форума Ответить с цитированием
Старый 22.03.2011, 01:11   #6
pooli
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 45
По умолчанию

в общем подошел такой способ

Код:
 'красим выходные дни
   Dim i
   With Me.ocxGrid
   On Error Resume Next

  For i = 2 To 365 Step 7
    .Row = 1
    .Col = i
    .CellBackColor = 255 '65535
    .Col = i + 1
    .CellBackColor = 255 '65535
   Next
  End With
pooli вне форума Ответить с цитированием
Старый 22.03.2011, 01:25   #7
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

У меня красит правильно : если стартовая дата помещается в cells (1,1)
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 23.03.2011, 00:34   #8
pooli
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 45
По умолчанию

ерунда это все!
получается так если например при добавлении новой сетки с периодом дат на 3 дня например то тогда красятся не правильные дни!
pooli вне форума Ответить с цитированием
Старый 23.03.2011, 00:41   #9
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от pooli Посмотреть сообщение
ерунда это все!
получается так если например при добавлении новой сетки с периодом дат на 3 дня например то тогда красятся не правильные дни!
Код:
For c = 1 To ocxGrid.Cols - 1
      ocxGrid.ColWidth(c) = 400 'ðàçìåð ñèìâîëîâ â øàïêå
      ocxGrid.TextMatrix(0, c) = Format(Int(ocxStartDate.Value) + c - 1, "mmmm yyyy") & "ã."
      ocxGrid.TextMatrix(1, c) = Day(Int(ocxStartDate.Value) + c - 1)
   Next
это цикл заполнения грида
вот и вставьте туда условие если день недели больше пятого надо покрасить
Все исходники и примеры у вас есть
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234

Последний раз редактировалось R Dmitry; 23.03.2011 в 00:54.
R Dmitry вне форума Ответить с цитированием
Старый 23.03.2011, 00:53   #10
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Код:
For c = 1 To ocxGrid.Cols - 1
ocxGrid.ColWidth(c) = 400 'ðàçìåð ñèìâîëîâ â øàïêå
ocxGrid.TextMatrix(0, c) = Format(Int(ocxStartDate.Value) + c - 1, "mmmm yyyy") & "ã."
ocxGrid.TextMatrix(1, c) = Day(Int(ocxStartDate.Value) + c - 1)

if clng(Format(ocxStartDate.Value + c - 1, "w", vbMonday))>5 then
ocxGrid.row=1:ocxGrid.col=c
ocxGrid.CellBackColor = 255
end if
Next
Это если совсем не получается.
Дмитрий.
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
счетчик дней без выходных Tadjik Общие вопросы Delphi 9 08.09.2010 08:41
FlexGrid Swatch Microsoft Office Access 1 31.07.2010 23:50
как расчитать кол-во рабочих дней за"-" выходных??? ЦЕРЦЕЯ Microsoft Office Excel 5 30.11.2009 14:16
Проблемма с FlexGrid bag Microsoft Office Excel 9 04.06.2009 10:15
Внедрить контрол в FlexGrid beryllium Общие вопросы .NET 0 21.02.2008 01:09