КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Использование модифицированной сетки
Begin Begin Begin // Скрытие первого столбца DBGridl.Columns[0].Visible:=false; // Установка параметров второго столбца DBGridl.Columns[1].Title.Caption:='Датa поступления'; DBGridl.Columns[1].Title.Alignment:=taCenter; DBGridl.Columns[1].Alignment:=taCenter; // Скрытие третьего столбца DBGridl.Columns[2].Visible:=false; // Установка параметров четвертого столбца DBGridl.Columns[3].Title.Caption: = 'Количество'; DBGridl.Columns[3].Title.Alignment:=taCenter; DBGridl.Columns[3].Alignment:=taRightJustify; // Установка параметров пятого столбца DBGridl.Columns[4].Title.Caption:='Примечание'; DBGridl.Columns[4].Title. Alignment:=taCenter; DBGridl.Columns[4].Title.Alignment:=taLeftJustifу; DBGridl.Columns[4].PickList.Clear; DBGridl.Columns[4].PickList.Add('Товар на складе'); DBGridl.Columns[4].PickList.Add('Некондиция'); DBGridl.Columns[4].PickList.Add('Срок реализации нелимитирован'); end;
Первый и третий столбцы устанавливаются невидимыми, для остальных столбцов задаются название заголовка и его выравнивание, а также выравнивание значений. Кроме того, для пятого столбца, соответствующего полю примечания, создан список выбора. Установка свойств столбцов произведена при создании формы, эти же действия могут быть проделаны и через Инспектор объектов. При выполнении приложения форма имеет вид, показанный на рис. 8.4. В дальнейшем при использовании компонента DBGrid свойства его столбцов изменяться не будут, при этом состав и порядок следования столбцов сетки будет соответствовать составу и порядку следования полей набора данных, а в качестве заголовков столбцов сетки будут отображаться названия полей набора данных. Рассмотрим еще один пример, в котором осуществляется преобразование значений записей набора данных в текст. В качестве набора данных используется компонент Queryl, SQL-запрос для которого вводится в многострочное поле редактирования Memo1. Выполнение запроса происходит при нажатии кнопки Buttoni с названием Выполнить SQL. Полученные в результате выполнения запроса записи отображаются в сетке DBGridl. При нажатии кнопки Button2 с названием Преобразовать происходит последовательный просмотр полей всех записей набора данных (сетки) и преобразование их в текст, который помещается в многострочное поле редактирования Мето2 (рис. 8.5). Рис. 8.4. Установка свойств для столбцов сетки
Рис. 8.5. Преобразование значений записей набора данных в текст
Ниже приведены обработчики событий нажатия кнопок. // Выполнение SQL-запроса procedure TForml.ButtonlClick(Sender: TObject); Queryl.Close; Queryl.SQL.Assign(Memol.Lines); Queryl.Open; end; // Преобразование значений записей набора данных в текст procedure TForml.Button2Click(Sender: TObject); var c, n:integer; s, rs:string; Memo2.Clear,• Queryl.First; // Перебор всех записей набора данных for n:=l to Queryl.RecordCount do begin rs: =' '; s: =' '; // Чтение названий столбцов сетки if n = 1 then begin for c:=0 to DBGridl.Columns.Count-1 do begin s:=DBGridl.Columns[c].FieldName+' '; rs:=rs+s; end; Memo2.Lines.Add(rs); rs:=' '; s:=' '; end; // Чтение значений полей текущей записи for c:=0 to DBGridl.Columns.Count-1 do begin s:=DBGridl.Columns[c].Field.AsString+' '; rs:=rs+s; end; Memo2. Lines. Add (rs); Queryl.Next; end; end;
Для доступа к названиям и значениям полей набора данных использованы свойства FieldName, Count и Field столбцов сетки. При необходимости текст из поля редактирования мето2 можно скопировать в буфер. Кроме компонента DBGrid, для управления записями таблицы предназначен компонент DBCtrlGrid — модифицированная сетка. Компонент DBCtrlGrid представляет собой несколько отдельных панелей, на которых располагаются визуальные компоненты (рис. 8.6). Рис. 8.6. Вид компонента DBCtrlGrid на этапе проектирования приложения
Модифицированная сетка DBctriGrid может отображать несколько одинаковых панелей, но текущей является только одна из них. При проектировании приложения визуальные компоненты, например, DBEdit или DBText, располагаются на одной (верхней) панели. Когда визуальные компоненты помещаются на панель модифицированной сетки, у них автоматически устанавливается нужное значение свойства Datasource, взятое из аналогичного свойства модифицированной сетки. При выполнении приложения компоненты, размещенные на одной панели, дублируются на другие панели сетки. На приведенной на рис. 8.7 сетке расположены четыре компонента DBEdit — для названия, единицы измерения, цены товара и примечания, компонент DBText — для количества товара на складе и надпись Label с текстом Наличие -. Рис. 8.7. Вид компонента DBCtrlGrid при выполнении приложения
Число панелей, одновременно видимых в модифицированной сетке, определяет свойство Paneicount типа integer, доступное для чтения во время выполнения приложения. Свойство Panelindex типа integer указывает текущую панель, на которой находится просматриваемая запись набора данных. Установив этому свойству соответствующее значение, можно сделать текущей нужную панель. Все панели сетки имеют одинаковые размеры, определяемые свойствами PanelHeight (высота) И PanelWidth (ширина) типа Integer. Каждая панель может иметь рамку, что определяется свойством PanelBorder типа TDBCtrlGridBorder, принимающим следующие значения: · gbNone — рамки нет; · gbRaised — трехмерная приподнятая рамка (по умолчанию).
Число одновременно видимых строк и столбцов сетки задают свойства Rowcount и coicount типа integer, значения которых по умолчанию равны трем и одному. Это соответствует трем панелям в одном столбце и наличию вертикальной полосы прокрутки. При задании более одного столбца у сетки появляется горизонтальная полоса прокрутки (рис. 8.8). Свойство Orientation типа TDBCtrlGridOrientation при наличии нескольких столбцов определяет порядок размещения записей на панелях. Это свойство принимает следующие значения: · goVertical — записи выводятся по горизонтали: слева направо и сверху вниз (по умолчанию); · goHorizontal — записи выводятся по вертикали: сверху вниз и слева направо. Рис. 8.8. Вид сетки с панелями в две строки и два столбца
На панели может отображаться прямоугольник фокуса (прямоугольная рамка), указывающий на текущую запись. Его отображением управляет свойство showFocus типа Boolean, которое по умолчанию имеет значению True, что соответствует отображению прямоугольника фокуса. Установка свойству ShowFocus значения False скрывает прямоугольник фокуса. Свойства AllowDelete И Allowlnsert типа Boolean управляют возможностями удаления текущей и вставки новой записи в набор данных, записи которого отображаются на панелях сетки. По умолчанию оба свойства имеют значение True, и пользователь имеет возможность удалять и вставлять записи. Свойство EditMode типа Boolean определяет, находится ли набор данных в режиме редактирования (значение True). Пользователь управляет его значением с помощью действий с визуальными компонентами, разработчик может устанавливать его программно. Пользователь с помощью мыши и клавиатуры управляет записями набора данных с помощью компонента DBCtrlGrid таким же образом, как и в случае компонента DBGrid. Программисту предоставляются дополнительные возможности управления набором данных, связанные с использованием метода DoKey. Процедура DoKey (Key: TDBCtriGridKey) выполняет различные операции, которые задает параметр Key, принимающий следующие значения: □ gkNull — пустое действие; □ gkEditMode — переключение значения свойства EditMode; □ gkPriorTab — передача фокуса управления на следующий элемент формы; □ gkNextTab — передача фокуса управления на предыдущий элемент формы; □ gkLeft — переход на один столбец влево; □ gkRight — переход на один столбец вправо; □ gkUp — переход на одну панель вверх; □ gkDown — переход на одну панель вниз; □ gkScrollUp — переход на одну строку вверх; □ gkScrollDown — переход на одну строку вниз; □ gkPageUp — переход вперед на число записей, равное произведению числа строк и столбцов панелей сетки (colCount * RowCount); □ gkPageDown — переход назад на число записей, равное произведению числа строк и столбцов панелей сетки; □ gkHome — переход на первую запись; □ gkEnd — переход на последнюю запись; □ gkInsert — вставка новой записи методом insert и переход в режим редактирования; □ gkAppend — вставка новой записи методом Append и переход в режим редактирования; □ gkDelete — удаление текущей записи; □ gkCancel — отмена режима редактирования.
При необходимости разработчик может выполнить программную прорисовку панелей, использовав для этого событие onPaintPanel типа TPaintPaneiEvent, возникающее непосредственно перед отображением панелей. Тип этого события описан как type TPaintPanelEvent = procedure (DBCtrlGrid: TDBCtrlGrid; Index: Integer) of object;
Параметр Index указывает номер панели, отображение элементов которой выполняется в настоящий момент. Кроме прорисовки, в обработчике события OnPaintPanel можно выполнить и другие действия, например, обработку связанных с панелью данных.
5. Использование навигационного интерфейса
Для управления набором данных можно использовать навигатор, который обеспечивает соответствующий интерфейс пользователя. По внешнему виду и организации работы навигатор похож на мультимедийный проигрыватель. В Delphi навигатор представлен компонентом DBNavigator (рис. 8.9). Рис. 8.9. Навигатор Навигатор содержит кнопки, обеспечивающие выполнение различных операций с набором данных путем автоматического вызова соответствующих методов. Состав видимых кнопок определяет свойство visibieButtons типа TButtonSet, принимающее комбинации следующих значений (в скобках указан вызываемый метод): o nbFirst — перейти к первой записи (First); o nbPrior — перейти к предыдущей записи (Prior); o nbNext — перейти к следующей записи (Next); o nbLast — перейти к последней записи (Last); o nbInsert — вставить новую запись (Insert); o nbDelete — удалить текущую запись (Delete); o nbEdit — редактировать текущую запись (Edit); o nbPost — утвердить результат изменения записи (Post); o nbCancel — отменить изменения в текущей записи (Cancel); o nbRefresh — обновить информацию в наборе данных (Refresh).
По умолчанию в навигаторе видимы все кнопки. Метод BtnClick(Index: TNavigateBtn) служит для имитации нажатия кнопки, заданной параметром index. Тип TNavigateBtn этого параметра идентичен типу TButtonSet, возможные значения соответствующего параметра которого перечислены выше. В качестве примера приведем строку кода: DBNavigator.BtnClick(nbNext); В ней имитируется нажатие кнопки nbNext, вызывающей переход к следующей записи набора данных. При нажатии кнопки nbDelete может появляться диалоговое окно, в котором пользователь должен подтвердить или отменить удаление текущей записи. Появлением окна подтверждения управляет свойство ConfirmDelete типа Boolean, по умолчанию имеющее значение True, т. е. окно подтверждения выводится. Если при отладке приложения установить этому свойству значение False, то запись будет удаляться без подтверждения. Свойство Flat типа Boolean управляет внешним видом кнопок. По умолчанию оно имеет значение False, и кнопки отображаются в объемном виде. При установке свойству Flat значения True кнопки приобретают плоский вид, соответствующий современному стилю. Подсказку для отдельной кнопки можно установить с помощью свойства Hints типа TString. По умолчанию список подсказок содержит текст на английском языке, который можно заменить на русский, вызвав Строковый редактор (String list editor). Подсказка для навигатора устанавливается через свойство Hint типа String. Напомним, что для отображения подсказок нужно присвоить значение True свойству ShowHint, по умолчанию имеющему значение False. На практике часто вместо навигатора используются отдельные кнопки Button или BitBtn, при нажатии на которые вызываются соответствующие методы управления набором данных. Например, в процедурах: procedure TForml.ButtonlClick(Sender: TObject);
Дата добавления: 2014-01-11; Просмотров: 527; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |