Для управления отображением результатов запроса создадим процедуру, в которой переназначим задаваемые по умолчанию свойства объектов-полей. Затем вызов этой процедуры нужно поместить в обработчик события onAfterOpen компонента Query1. Этот обработчик вызывается каждый раз после выполнения метода Open класса TQuery.
procedure TfrmRoomsView.ManageFields;
begin
query1.FieldByName('num').DisplayLabel:='Номер';
query1.FieldByName('num').DisplayWidth:=7;
query1.FieldByName('num').Alignment:=taCenter;
query1.FieldByName('tip_name').DisplayLabel:='Тип номера';
query1.FieldByName('tip_name').DisplayWidth:=12;
query1.FieldByName('price').DisplayLabel:='Цена';
query1.FieldByName('price').DisplayWidth:=8;
query1.FieldByName('fio').DisplayLabel:='Постоялец';
query1.FieldByName('fio').DisplayWidth:=30;
end;
procedure TfrmRoomsView.Query1AfterOpen(DataSet: TDataSet);
begin
ManageFields;
end;
Наконец, осталось только создать обработчики для кнопок “Найти” и “Очистить” панели поиска подходящих номеров по типу и стоимости.
procedure TfrmRoomsView.btnFindRoomsClick(Sender: TObject);
var
roomTypeExpr, sortField, showExpr: String;
begin
if roomType.ItemIndex > 0 then
roomTypeExpr := ' AND (tip_name = “' + roomType.Text + '”)';
if roomPriceEnable.Checked then
query1.ParamByName('ROOM_PRICE').AsInteger:=StrToInt(roomPrice.Text);
if roomSort.ItemIndex = 1 then
sortField := 'fio;'
else
sortField := 'tip_name;';
case roomShow.ItemIndex of
0: showExpr := '';
1: showExpr := ' AND (fio IS NULL)';
2: showExpr := ' AND (fio IS NOT NULL)';
end;
query1.Close;
query1.SQL.Text := sql_begin + showExpr + roomTypeExpr +
' ORDER BY ' + sortField;
query1.Open;
end;
procedure TfrmRoomsView.btnClearFindClick(Sender: TObject);
begin
query1.ParamByName('ROOM_PRICE').AsInteger := 10000;
SortRooms;
end;
Задания:
1) Изучите пример выполнения задания.
2) Добавьте к созданному ранее приложению новую форму, реализующую следующие возможности:
Вариант 1: список заказов с возможностью фильтрации по периоду времени (все, за последний месяц, за последнюю неделю, сегодняшние) и сортировки по стоимости заказа, его давности или названию товара.
Вариант 2: список поставок товаров с указанием личных данных поставщика и информации о поставляемом товаре с возможностью фильтрации по конкретному поставщику, товару и давности поставок (все, за последний месяц, за последнюю неделю, сегодняшние) и сортировки по поставщику, товару или давности поставки.
Вариант 3: список работников с указанием имен руководителей и названия отдела, в котором работает тот или иной сотрудник с возможностью фильтрации по отделам, руководителям, возрасту и полу и сортировки по отделам, по руководителям, в алфавитном порядке по Ф.И.О., по возрасту.
Вариант 4: список выданных на руки книг с указанием названия, автора и жанра книги, а также имени и адреса читателя и даты возврата книги с возможностью фильтрации по жанру книги, автору книги и дате возврата (уже наступила или еще не наступила) и сортировки по жанру, давности выдачи, названию книги, имени автора или читателя в алфавитном порядке.
Вариант 5: список всех товаров на базе с указанием наименования склада и его телефона, а так же наименования и краткой характеристики товара с возможностью фильтрации по складам и производителям товара и сортировки по складам, производителям и наименованию товара.
Вариант 6: список студентов с указанием группы, кафедры и факультета с возможностью фильтрации по группам, кафедрам и факультетам и сортировки по фамилиям, группам, кафедрам и факультетам.
Вариант 7: список преподавателей с указанием должности, стажа и заработной платы (рассчитывается как оклад плюс надбавка за стаж) с возможностью фильтрации по должностям, стажу и уровню заработной платы и сортировки по фамилиям, должностям, стажу и заработной плате.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.