уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Это пятая статья из серии по компонентам JVCL вкладки Jv TimeFrameWork. Предыдущие посты (по порядку):

  1. Jv TimeFrameWork. Свойства компонента TjvTFDays.
  2. Jv TimeFrameWork. Свойства компонента TjvTFDays. Продолжение.
  3. Jv TimeFrameWork. Методы TjvTFDays для работы с элементами события и областями сетки.
  4. Jv TimeFrameWork. Методы TjvTFDays: редактирование событий и работа с сеткой.

Сегодня рассмотрим оставшиеся методы из секции public компонента TjvTFDays – методы, с помощью которых можно перемещаться по сетке и выделять необходимые события.

Методы для навигации по датам.

Работа с этой группой методов возможна, если в компоненте TjvTFDays определено свойство Template (про Template см. этот пост). Методы позволяют без лишних усилий удобно перемещаться от одного столбца к другому. Определены следующие методы:

procedure PrevDate;

Если определен шаблон, то проматывает сетку расписания на 1 день влево.

procedure NextDate;

Если определен шаблон, то проматывает сетку расписания на 1 день вправо.

procedure GotoDate(aDate: TDate);

Если определен шаблон, то проматывает сетку расписания на указанную дату aDate.

procedure ScrollDays(NumDays: Integer);

Проматывает сетку на NumDays дней вправо. Если задано отрицательное число, то промотка идёт влево

procedure ScrollMonths(NumMonths: Integer);

Проматывает сетку на NumMonths месяцев вправо. Если задано отрицательное число, то промотка идёт влево

procedure ScrollYears(NumYears: Integer);

Проматывает сетку на NumYears лет ев вправо. Если задано отрицательное число, то промотка идёт влево

Для того, чтобы продемонстрировать действие этих методов, воспользуемся примером приложения из прошлой статьи. Изменим в компоненте DayGrid:TjvTFDays свойство Template следующим образом:

ActiveTemplate = agtLinear

LinearDayCount = 3

LinearStartDate = 24.01.2011

LinearEndDate = 26.01.2001

LinearName = Расписание

Сетка расписания теперь примет следующий вид:

DayGrid_1

Добавим на форму четыре кнопки и напишем для них следующие обработчики события onClick:

procedure TMainForm.Button4Click(Sender: TObject);
begin
  DayGrid.PrevDate;
end;
 
procedure TMainForm.Button5Click(Sender: TObject);
begin
  DayGrid.NextDate
end;
 
procedure TMainForm.Button6Click(Sender: TObject);
begin
  DayGrid.GotoDate(Now);
end;
 
procedure TMainForm.Button7Click(Sender: TObject);
begin
  DayGrid.ScrollDays(-10);
end;

Теперь запустите приложение и попробуйте нажать любую из кнопок. Шаблон нашей сетки будет изменяться в зависимости от примененного метода. Например, если я воспользуюсь методом ScrollDays(-10), то сетка примет следующий вид:

DayGrid_2

Как видите, не прибегая к непосредственному изменению свойств шаблона и переместился на десять дней влево относительно первой даты в расписании.  Аналогичным образом действуют и другие методы из этой группы.

Кроме представленных выше методов к методам навигации можно отнести ещё два метода:

procedure RowInView(ARow: Integer);

Проматывает сетку таким образом, чтобы строка с индексом ARow стала видна пользователю. Если строка уже видна, то промотка не происходит

procedure ColInView(ACol: Integer);

Проматывает сетку таким образом, чтобы колонка с индексом ACol стала видна пользователю. Если колонка уже видна, то промотка не происходит

Методы выделения событий в сетке.

К этой группе относятся следующие методы:

function CellIsSelected(ACell: TPoint): Boolean;

Возвращает True, если ячейка с координатами ACell в настоящий момент выделена.

function ColIsSelected(ACol: Integer): Boolean;

Возвращает True, если колонка расписания с индексом ACol выделена.

function RowIsSelected(ARow: Integer): Boolean;

Описание. Возвращает True, если строка с индексом ARow выделена в сетке расписания

procedure ClearSelection;

Убирает текущее выделение из сетки.

function ValidSelection: Boolean;

Описание. Возвращает True, если выделена ячейка для добавления нового события. Если выделен заголовок группы, то метод возвращает False.

procedure SelFirstAppt;

Выделяет первое (верхнее) событие в выделенной колонке расписания.

procedure SelPrevAppt;

Выделяет (если то возможно) предыдущее событие в выделенной колонке.

procedure SelNextAppt;

Выделяет следующее событие в выделенной колонке.

procedure SelLastAppt;

Выделяет последнее событие в выделенной колонке.

procedure SelFirstApptNextCol;

Выделяет первое событие в колонке, которая находится правее выделенной

procedure SelFirstApptPrevCol;

Выделяет первое событие в колонке, которая находится левее выделенной.

procedure ApptInView(AAppt: TJvTFAppt; ACol: Integer);

Прокручивает сетку таким образом, чтобы событие AAppt, находящееся в колонке ACol стало видно в сетке.

procedure SelApptCell(AAppt: TJvTFAppt; ACol: Integer);

Выделяет событие AAppt, находящееся в колонке ACol.

function GroupHdrIsSelected(ACol: Integer): Boolean;

Возвращает True, если выделен заголовок группы в колонке ACol.

В целом, я думаю, работа всех методов, представленных выше, не вызовет ни у кого вопросов. Остается только добавить, что на данный момент я рассмотрел лишь ту часть методов и свойств компонента, которые относятся к секциям public и published компонента, впереди ещё по-крайней мере один пост, касающияся компонента TjvTFDays, а именно – описание событий компонента и, надеюсь, что после этого у меня хватит и сил и свободного времени, чтобы собрать всё изложение в один большой документ. Кстати, про документ – его формат будет зависеть от результатов голосования, которое Вы можете видеть в сайдбаре. Пока лидирует формат pdf ;)

0 0 голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
5 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
trackback

[…] This post was mentioned on Twitter by Королевство Delphi, Vlad. Vlad said: Новый пост: Jv TimeFrameWork. Методы TjvTFDays: перемещение по событиям, выделение событий. — http://bit.ly/dZKWGd […]

Хаби
Хаби
15/02/2011 02:05

Почему TFDays не воспроиводит русские буквы? Вместо букв ######….
BDE  LANGUAGE DRIVER выставлен на Pdox ANSI Cyrillic …
Может дело в настройках TFDays?

Хаби
Хаби
16/02/2011 20:54

Версия:Delphi7 E

Вася
Вася
13/04/2011 05:05

напишите как использовать компоненты с вкладки  JVTHEADING