Это пятая статья из серии по компонентам JVCL вкладки Jv TimeFrameWork. Предыдущие посты (по порядку):
- Jv TimeFrameWork. Свойства компонента TjvTFDays.
- Jv TimeFrameWork. Свойства компонента TjvTFDays. Продолжение.
- Jv TimeFrameWork. Методы TjvTFDays для работы с элементами события и областями сетки.
- 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 = Расписание
Сетка расписания теперь примет следующий вид:
Добавим на форму четыре кнопки и напишем для них следующие обработчики события 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), то сетка примет следующий вид:
Как видите, не прибегая к непосредственному изменению свойств шаблона и переместился на десять дней влево относительно первой даты в расписании. Аналогичным образом действуют и другие методы из этой группы.
Кроме представленных выше методов к методам навигации можно отнести ещё два метода:
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 ;)
[…] This post was mentioned on Twitter by Королевство Delphi, Vlad. Vlad said: Новый пост: Jv TimeFrameWork. Методы TjvTFDays: перемещение по событиям, выделение событий. — http://bit.ly/dZKWGd […]
Почему TFDays не воспроиводит русские буквы? Вместо букв ######….
BDE LANGUAGE DRIVER выставлен на Pdox ANSI Cyrillic …
Может дело в настройках TFDays?
Скорее дело и не в БД и не в самом компоненте. Версия Delphi какая? с 2009 версии:
string = UnicodeString.
Версия:Delphi7 E
напишите как использовать компоненты с вкладки JVTHEADING