Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Лаба 9 №47. Пустые столбцы. Формирование списка возможных значений столбца.



 

Если создать объект-столбец и оставить незаполненными его свойство FiledName, то будет создан пустой столбец. С помощью обработчика OnDrawColumnCell сетки (возникает при необходимости прорисовки ячейки) в таком столбце можно выводить какую-либо информацию, основываясь на информации из действительно существующих полей НД (например, сцепление полей адрес фирмы и телефон). Но чаще для формирования нужного вывода информации из полей НД используют событие OnGetText объекта-поля или создают в НД вычисляемое поле. Основное применение пустых столбцов – помещение в их ячейки кнопок (для этого в свойстве ButtonStyle устанавливаем cbsEllipse). При щелчке на кнопке (она видима только в режиме редактирования ячейки с кнопкой) возникает событие OnEditButtonClick, которое можно использовать по своему усмотрению. Например, если выводить графические поля для каждой записи в отдельном столбце сетки или даже для текущей записи с помощью отдельного компонента TDBImage, то требуются значительные временные затраты на вывод. Для ускорения листания сетки вместо графического поля устанавливается пустой столбец с кнопкой, а в обработчике события OnEditButtonClick предусматривается вызов формы, показывающей содержимое графического поля текущей записи или активизацию компонента TDBImage, расположенного на той же форме, что TDBGrid. Аналогично можно поступать и с Memo-полями.

Формирование списка возможных значений столбца

Свойство PickList объекта-столбца содержит список возможных значений столбца. Это свойство для столбцов, отображающих подстановочные поля НД, автоматически формируется содержимым отображаемого поля. Для остальных столбцов это свойство в большинстве случаев остаётся пустым, но можно заполнить его как на этапе разработки программы, так и при ее работе.

 

Лаба 9 №48. Управление отображением данных в TDBGrid.

 

То, как происходит прорисовка данных в сетке TDBGrid – стандартным образом или по определенному сценарию – определяется свойством DefaultDrawing. Если в этом свойстве установить False, то алгоритм прорисовки должен содержаться в обработчиках события ondrawcollumncell и ondrawdatacell (обработчик события ondrawdatacell введён для совместимости с ранними версиями Delphi).

Пример: Вывод значения поля жирным шрифтом в верхний левый угол ячеек соответствующего столбца.

 

Procedure Tform1.DBGrid1DrawcolumnCell(Sender: TObject; Const Rect: Trect; Datacol: Integer; Column: TColumn; State: TGridDrawState);

Begin

If Zakaz[‘kol’]> 10 then

With DBGrid1.Canvas do

Begin

Font.style: =[fsbold];

TextOut(rect.Left, Rect.Top, Column.Field.Text);

End;

End;

 

Параметры события OnDrawColumnCell:

1) Rect – координаты области прорисовки;

2) DataCol – порядковый номер текущего столбца, начиная с нулевого;

3) Column – текущий столбец;

4) State – состояние ячейки:

а) gdSelected – ячейка выделена;

б) gdFocused – ячейка имеет фокус ввода;

в) gdFixed –ячейка относится к фиксированной строке или столбцу;

Для стандартного вывода ячеек используется метод DefaultDrawColumnCell.

Если в свойстве DefaultDrawing компонента TDBGrid установить True (задаётся по умолчанию), то обработчики будут вызваны после завершения стандартной процедуры прорисовки, т.е. программный вывод в данном случае накладывается на стандартный. Это может стать причиной неправильного отображения данных. Чтобы исключить нежелательное влияние стандартного вывода необходимо сначала закрасить прямоугольник прорисовки: FillRect(Rect). Но при двойной прорисовке может замедлиться скорость листания данных в сетке, поэтому лучше в свойстве DefaultDrawing установить False и в обработчике события OndrawColumnCell написать:

 

If Zakaz[‘kol’]> 10 then

With DBGrid1.Canvas do

Begin

Font.style: =[fsbold];

TextOut(rect.Left, Rect.Top, Column.Field.Text);

End

Else

DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

 

Событие OnDrawColumnCell возникает при прорисовке каждой ячейки, при этом текущей записью базового НД становиться запись с прорисовываемой ячейкой.


 

№49. Дополнительные возможности компонента TDBGrid.

 

Свойство Options компонента TDBGrid имеет следующие параметры:

  1. dgEditing – разрешает редактирование.
  2. dgAlwaysShowEditor – при выделении столбца автоматически переводит его в режим редактирования.
  3. dgTitles – показывает заголовки столбцов.
  4. dgIndicator – показывает указатель текущей строки в самом левом фиксированном столбце.
  5. dgColumResize – разрешает пользователю с помощью мыши менять ширину столбцов.
  6. dgColLines – показывает в сетке вертикальные разделяющие линии.
  7. dgRowLines – показывает в сетке горизонтальные разделяющие линии.
  8. dgTabs – разрешает переход от столбца к столбцу с помощью клавиши Tab.
  9. dgRowSelect – разрешает выделение цветом всей текущей строки.
  10. dgAlwaysShowSelection – выделение текущей строки цветом сохраняется, даже если компонент теряет фокус ввода.
  11. dgConfirmDelete – требует подтверждения удаления строки.
  12. dgCancelOnExit – если пользователь вставляет пустую строку и покидает её, то она не сохраняется в таблице БД;
  13. dgMultiSelect – разрешает множественный выбор строк.

Если dgEditing = false, то независимо от свойства readOnly любого столбца, все данные в сетке будут защищены. Если dgAlwayShoweditor = false, то редактировать выделенный столбец можно после нажатия клавиш F2, или Enter или после двойного щелчка на ячейке мышью (левой кнопкой).

№50 Основные свойства и методы компонента TQuery

Свойство SQL представяет собой набор строк где пишется текст SQL запроса. Компонент Ейгукн находящийся на панели ИЕУ позволяет определить условие отбора записей из нескольких таблиц БД.

Основные свойства компонента Tquery

1) DataSource содержить ссылку на компоненты TDAtaSource используемый для формирования параметрического запроса.

2) Local – имеет значение true& еслт TQuery работает с локальной или файл-серверной БД

3) Params хШтвучЖ Word содержит массив объектов-параметров класса TParams

4) Prepared - =true если запрос был подготовлен к выполнению методом Prepare

5) RowsAffected – содержить количесво записей, которые были изменены или удалены в результате выполнения запроса

6) SQL – содержит текст SQL запроса

Основные методы компонента TQuery

1. ExecSQL – выполняет запросы Insert, UpDate, Delete, Create Table. Для выполнения запроса Select вместонего используется метод Open или свойство Active

2. ParamByName (const Value: string); - открывает доступ к параметру по его имени Value

3. Prepare – передает BDE запрос для того, чтобы BDE и удаленный сервер БД распределили свои ресурсыи доплнотельно оптимизировали запрос

Свойства класса TParams

1. AsXXXX эти свойства (AsString, AsInteger и т.д.) служат для преобразования значения параметра к нужному типу

2. IsNull содержит True если с параметром не связано значение

3. Name содержит имя параметра

4. Value –содержит значения параметра

Для отображения результатов запроса с компонентом TQuery связывает компонент TDataSource, в свойстве DataSet которого указываем имя объекта, например Query1. В свойстве DataBaseName объекты Query1 указываем алиас(псевдоним). В свойстве DataSource объекты TDBGrid указываем имя источник данных, например DataSource1.

 

№51Свойства SQL компоненты TQuery. Параметрические запросы.

Свойсво ЫЙД представляет собой набор строк в которой на этапе разработки или работы программы помещается текст запроса. Если текст размещен на этапе разработки программы то для такго НД можно создать объекты-поля. При любом изменении этого свойства компонент переходит в неактивное состояние. после изменения текста компонент следует открыть заново.

Для введения текста запроса на этапе разработки программы необхадимо использовать связанный со свойством SQL многострочный текстовый редактор. Щелкнув в нем на кнопки Code Editor можно сформировать текст запроса в кодовом редакторе среды Delphi, в котором автоматически выделяются в тексте зарезервированные слова и коментарии.

Компонент TQuery позволяет создавать так называемые параметрические запросы, в который группа параметров уточняет запрос. Параметры могут изменяться в процессе работы программы.

Пример

Сформируем список всех покупателей заказавших запасные части в день определяемый параметром Date.

Select Nom_zak, pok, adr, From Zakaz, Zakazchikik, Where ( kod_pok=id_pok) and (Date_zak =: DATE)

Начальное значение параметра Date задается на этапе разработки программы с помощью редактора свойств Params и инспектора объектов, в тексте запроса имени параметра предшесвует: имена параметров могут быть произвольными идентификаторами Delphi, регистр букв в них не имеет значения. Для здания начального значения параметра в окне инспектора объектов необходимо задаеть его свойсвтво Value ( например 15.12.2007) и Delphi автоматически укажет тип данных в свойстве DataType, при необходимости его можно изменить вручную.

Для программного задания значения параметра используются свойства Params и метод ParamByName. В первом случае конкретный параметр задается индексом Index ( нумерация начинает с нуля ).Во втором случае параметр определяется своим именем в тексте запроса. В любом случае при обращении к параметру его значение необходимо явно приводить к типу данных параметра свойсвом AsXXXX

Пример

Динамеческий запрос отображает список товаров проданных во втором магазине в указанную дату

DM.Query1.Close;

DM.Query1.SQL.Clear;

DM.Query1.SQL.Add (‘Select * from база3 ‘);

DM.Query1.SQL.Add (‘where (Nommag =2’) AND (DataRasch =: DataRaschPar)’);

DM.Query1.ParamByName (‘Data-Raschpar’).ASDate: = strtodate (Edit1.Text);

Или

DM.Query1.Params [0].AsDate: = strtodate (Edit1.text);

DM.Query1.Active: = true;

Значение null свидетельсвует о том, что поле не присвоено никакого значения. Значение 0 длячисловых полей или пустая строка для текстовых полей – это вполне определенные, отличные от null значения, чтобы присвоить параметру значение null во время работы программы, нобходимо выполнить его метод Clear. Для передачи парметром можно использовать свойство DataSource компонента TQuery. Если это свойство определено, то нельзя использовать явные присваивания значений параметра:

Query1.ParamByName (‘ имя_параметра ‘).Value: = значение;

В этом случае в НД связаным со свойством DataSource отыскиваются поля, имена которых совпадают с именами параметров запроса. Если такие поля есть, то их текущее значение берутся в качесве значений параметров, а в противном случае возникает ошибка

 

№52 Оператор Select

Операторы SQL могул выполнятся непосредсвенно из программного кода. Для этого текст-оператора указывается в свойстве SQL компонента TQuery(смотри вопрос 51). Так же эти оператоы могут выполняться ил утилиты SQL Explorer. Для этого текст оператора указывается на вкладке Enter SQL, а на вкладке Data можно посмотреть содержимое конкретной таблицы.

Опертор Select фармирует НД, отбирая записи из одой или нескольких таблиц на основаниие некоторго условия.


Поделиться:



Последнее изменение этой страницы: 2017-04-13; Просмотров: 594; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.035 с.)
Главная | Случайная страница | Обратная связь