Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 DevExpress cxScheduler  [new]
Kadekin
Member

Откуда:
Сообщений: 59
Добрый день.
У меня на форме есть CheckBox - соответствующим рабочим дням при Checked эти дни отображаются.
Похожая тема подымалась но так и не раскрыли ее.
Пользуюсь Delphi XE7
У компонента DevExpress - cxScheduler
В Properties есть OptionView.WorkDays
И мне нужно им управлять. в описаниях DevExpress про это не сказано. На просторах Googl нет.
если кто сталкивался подскажите.... как это реализовать.

Пробовал как писали в похожей теме но увы.
Но не работает. Ошибок не выдает... но и не чего не делает.
if checkboxSunday.checked then 
  cxScheduler1.OptionsView.WorkDays := cxScheduler1.OptionsView.WorkDays + [dSunday];
2 ноя 18, 20:57    [21722961]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress cxScheduler  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3845
WorkDays -- это для раскраски календаря на рабочие и не рабочие дни. Можно указывать только дни недели, даты нельзя.

Соответственно, если в настройках шедулера эта раскраска по дням не включена -- то и разницы не будет видно.
2 ноя 18, 21:14    [21722974]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress cxScheduler  [new]
Kadekin
Member

Откуда:
Сообщений: 59
JaDi,
Я понимаю что в WorkDays - указывается dSunday, dMonday и т.д.
2 ноя 18, 21:19    [21722976]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress cxScheduler  [new]
Kadekin
Member

Откуда:
Сообщений: 59
Kadekin,

К сообщению приложен файл. Размер - 45Kb
2 ноя 18, 21:22    [21722981]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress cxScheduler  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3845
Всё корректно меняется:

procedure TForm15.cxCheckBox1PropertiesEditValueChanged(Sender: TObject);
begin
  if cxCheckBox1.Checked then
  begin
    cxScheduler1.OptionsView.WorkDays := cxScheduler1.OptionsView.WorkDays + [cxDateUtils.TDay.dSunday]
  end
  else
  begin
    cxScheduler1.OptionsView.WorkDays := cxScheduler1.OptionsView.WorkDays - [cxDateUtils.TDay.dSunday]
  end;
end;


А вот если посмотреть в справку, то там можно увидеть, что такие же настройки выходных есть в ресурсах. И у них будет приоритет:

автор
Specifies the days that contain work hours.

Syntax
type
TDay = (dSunday, dMonday, dTuesday, dWednesday, dThursday, dFriday, dSaturday);
TDays = set of TDay;
property WorkDays: TDays;
Description

Use the WorkDays property to specify the days that are displayed as workdays in the scheduling area.

Note the following:

The resource's WorkDays property has a higher priority than the WorkDays property.

The View's CompressWeekEnd and HideWeekEnd properties don't depend upon the resource's WorkDays property, so this property doesn't affect the View layout. It only informs the scheduler in which days time blocks are to be painted as work hours (see the resource's WorkStart and WorkFinish properties).


К сообщению приложен файл. Размер - 91Kb
2 ноя 18, 21:50    [21723000]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress cxScheduler  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3845
правильная гифка:
Картинка с другого сайта.
2 ноя 18, 21:52    [21723002]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress cxScheduler  [new]
Kadekin
Member

Откуда:
Сообщений: 59
JaDi,
прошу прощения, мне нужно что бы эти дни недели исчезли (закрылись)
Т.е. Понедельник 17 число и т.д.
Я выбираю например пятницу (это 21 число) cxSheduler отображает только все числа пятницы, остальные скрывает
2 ноя 18, 22:14    [21723017]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress cxScheduler  [new]
Gator
Member

Откуда: Москва
Сообщений: 13909
Kadekin,

Как ты себе представляешь? А юзеру что делать? Он привык к календарю на стенке. Дырки вырезать?

Разноцветная подсветка - самое оно imho
_________
Ну... у JADI контраста нет и цвета дурацкие жёлтые непривычные, зато просто
2 ноя 18, 22:49    [21723042]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress cxScheduler  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3845
Kadekin
JaDi,
прошу прощения, мне нужно что бы эти дни недели исчезли (закрылись)
Т.е. Понедельник 17 число и т.д.
Я выбираю например пятницу (это 21 число) cxSheduler отображает только все числа пятницы, остальные скрывает

Это делается через ручное выделение дней в DateNavigator.

Пример, как выделить все субботы (только эти дни и останутся в списке):
procedure TForm15.cxCheckBox1PropertiesEditValueChanged(Sender: TObject);
var
  I: Integer;
  needDays: TList<TDateTime>;
  currentDate: TDateTime;
  maxDate: TDateTime;
begin
  // оставляем все воскресенья для текущего месяца
  currentDate := StartOfTheMonth(Now);
  maxDate := DateOf(EndOfTheMonth(Now));

  // список дат для выделения
  needDays := TList<TDateTime>.Create;
  while currentDate <= maxDate do
  begin
    if DayOfWeek(currentDate) = DaySunday then
    begin
      needDays.Add(currentDate);
    end;

    currentDate := IncDay(currentDate, 1);
  end;

  // само выделение
  cxScheduler1.DateNavigator.BeginUpdate;
  try
    cxScheduler1.SelectDays(needDays.ToArray, True);
  finally
    cxScheduler1.DateNavigator.EndUpdate;
  end;

  FreeAndNil(needDays);
end;


К сообщению приложен файл. Размер - 27Kb
2 ноя 18, 22:57    [21723046]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress cxScheduler  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3845
JaDi,

там DayOfTheWeek должно быть... Думаю, идея понятна. Естественно, такое сработает не для всех представлений, а только для тех, где можно отдельные дни выделять.
2 ноя 18, 23:06    [21723056]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить