Delphi 3. Библиотека программиста

       

Тестирование компонента DBStatistics


Наш великолепный компонент готов, пора испытать его на практике. В этом разделе мы напишем программу, которая позволяет выбрать любое поле в таблице и получить по нему полный статистический отчет, аккуратно выведенный в Memo-компоненте. На рис. 11.1 показано, как выглядит программа StatsProject.

Все файлы этого проекта находятся на CD-ROM, в подкаталоге главы11. В тексте будет приведен лишь непосредственно обсуждаемый код.

Обратите внимание: эта форма выглядит стандартно — на ней есть несколько самых обычных визуальных элементов, а также компоненты TTable, TDataSource, TOpenDialog и, разумеется, TDBStatistics. При запуске StatsProject пользователь должен прежде всего выбрать таблицу. Это делается с помощью кнопки BtnTableSelect — элемента TButton с надписью «1. Select a table & field». В обработчике события OnClick кнопки BtnTableSelect имя таблицы определяется с помощью компонента OpenDialog1 класса TOpenDialog.

Рис. 11.1. Программа StatsProject во время выполнения

Все начинается с вызова метода Execute. Если был выбран файл с допусти мым именем, работа продолжается:

with OpenDialog1 do begin Execute; if FileName = '' then exit;

Затем мы устанавливаем свойства компонента TTable в соответствии с файлом, выбранного пользователем, и выводим сведения о файле с помощью двух элементов TLabel:

Table1.DatabaseName := ExtractFilePath(FileName); LblDatabase.Caption := ExtractFilePath(FileName); Table1.TableName := ExtractFileName(FileName); LblTable.Caption := ExtractFileName(FileName);

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

CBFields.Items.Clear; CBFields.Text := ''; Memo1.Text := ''; Table1.Open; for i := 0 to Table1.FieldDefs.Count-1 do begin Application.ProcessMessages; CBFields.Items.Add(Table1.Fields[i].FieldName); end; Table1.Close;

На этом выбор таблицы и имени поля завершается.

После того как пользователь выбрал анализируемое поле, он может сгенерировать статистический отчет в элементе Memo, нажимая кнопку BtnReports (кнопка с надписью «2. Generate a report»). В обработчике BtnReports.OnClick мы прежде всего задаем соответствующие свойства компонента DBStatistics1:

DBStatistics1.LowerBound := 1; Table1.Open; DBStatistics1.UpperBound := Table1.RecordCount; Table1.Close; DataSource1.DataSet := Table1; DBStatistics1.DataSource := DataSource1; DBStatistics1.DataField := CBFields.Text; {выбранное поле}

Затем мы вызываем DBStatistics1.GetAllStats и выводим результаты в элементе Memo:

DBStatistics1.GetAllStats; Memo1.Text := ''; Memo1.Lines.Add('Mean: ' + #09 + #09 + FloatToStr(DBStatistics1.Mean)); { ... и т. д. ... } Memo1.Lines.Add('Kurtosis: ' + #09 + #09 + FloatToStr (DBStatistics1.Kurtosis));

Дело сделано — у нас появился работоспособный генератор статистических отчетов.



Содержание раздела