| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Использование компонента StringGrid
Использование
компонента StringGrid Для ввода массива удобно
использовать компонент StringGrid. Значок компонента StringGrid находится на
вкладке Additional (рис. 5.2).
Рис. 5.2.
Компонент StringGrid Компонент StringGrid
представляет собой таблицу, ячейки которой содержат строки символов. В табл.
5.1 перечислены некоторые свойства компонента StringGrid. Таблица 5.1.
Свойства компонента StringGrid
В качестве примера
использования компонента stringGrid для ввода массива рассмотрим программу,
которая вычисляет среднее арифметическое значение элементов массива. Диалоговое
окно программы приведено на рис. 5.3. Компонент stringGrid используется для
ввода массива, компоненты Label1 и Label2 — для вывода пояснительного текста
и результата расчета, Buttoni — для запуска процесса расчета.
Рис. 5.3. Диалоговое
окно программы Ввод и обработка массива Добавляется компонент
stringGrid в форму точно так же, как и другие компоненты. После добавления компонента
к форме нужно выполнить его настройку в соответствии с табл. 5.2. Значения свойств
Height и width следует при помощи мыши установить такими, чтобы размер компонента
был равен размеру строки. Текст программы приведен
в листинге 5.2. Таблица 5.2.
Значения свойств компонента StringGrid1
Листинг 5.2. Ввод
и обработка массива целых чисел unit
getar_; interface uses Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, Grids, StdCtrls; type TForm1
= class(TForm) Label1:
TLabel; StringGridl:
TStringGrid; Button1:
TButton; Label2:
TLabel; procedure
ButtonlClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1:
TForml ; implementation {$R
*.dfm} procedure
TForml.ButtonlClick(Sender: TObject); var a : array[1..5] of integer; // массив summ:
integer; // сумма элементов sr:
real; // среднее арифметическое i:
integer; // индекс begin //
ввод массива
// считаем, что если ячейка пустая, то соответствующий
// ей элемент массива равен нулю for
i:= 1 to 5 do if
Length(StringGridl.Cells[i-1, 0]) <>0 then a[i] := StrToInt(StringGridl.Cells[i-1,0]) else
a[i] := 0; //
обработка массива summ
:= 0; for
i :=1 to 5 do summ
:= summ + a[i]; sr := summ / 5; У
вывод результата Label2.Caption := 'Сумма элементов: ' + IntToStr(summ) + #13+ 'Среднее арифметическое: ' + FloatToStr(sr); end;
end. После пробных запусков
программы возникает желание внести изменения в процесс ввода массива. Так, было
бы неплохо, чтобы курсор автоматически переходил в следующую ячейку таблицы,
например, в результате нажатия клавиши <Enter>. Сделать это можно при
помощи процедуры обработки события onKeyPress. На эту же процедуру можно возложить
задачу фильтрации вводимых в ячейку таблицы данных. В нашем случае надо разрешить
ввод в ячейку только цифр. Текст процедуры обработки
события OnKeyPress приведен в листинге 5.3. Следует обратить внимание на свойство
Col, которое во время работы программы содержит номер колонки таблицы, в которой
находится курсор. Это свойство можно также использовать для перемещения курсора
в нужную ячейку таблицы. Однако нужно учитывать, что колонки таблицы, впрочем,
как и строки, нумеруются с нуля. Листинг 5.3.
Процедура обработки события OnKeyPress procedure TForm1.StringGridlKeyPress(Sender: TObject; var Key: Char); begin case
Key of #8,'0'..'9' : ; // цифры и клавиша <Backspace> #13:
// клавиша <Enter> if
StringGridl.Col < StringGridl.ColCount — 1 then StringGridl.Col := StringGridl.Col + 1; else key := Chr(0); // остальные символы запрещены end; end; Если нужно ввести массив
дробных чисел (a: array [1. .5] of real), то процедура обработки события OnKeyPress
несколько усложнится, т. к. помимо цифр допустимыми символами являются символ-разделитель
(запятая или точка — зависит от настройки Windows) и минус. С целью обеспечения
некоторой дружественности программы по отношению к пользователю можно применить
трюк: подменить вводимый пользователем неверный разделитель верным. Определить,
какой символ-разделитель допустим в текущей настройке Windows, можно, обратившись
к глобальной переменной Decimaiseparator. В листинге 5.4 приведен
текст модуля приложения ввода и обработки массива дробных чисел. Процедура обработки
события OnKeyPress обеспечивает ввод в ячейку таблицы только допустимых при
записи дробного числа символов. Листинг 5.4.
Ввод и обработка массива дробных чисел unit.
getar_1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, Grids, StdCtrls; type TForm1=
class(TForm) Label1:
TLabel; StringGrid1:
TStringGrid; Button1:
TButton; Label2:
TLabel; procedure
Button1ClicktSender: TObject); procedure StringGridlKeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var Form1:
TForm1; implementation {$R
*.dfm} procedure TForm1.ButtonlClick(Sender: TObject); var a : array[1..5] of real; // массив suram:
real; // сумма элементов
sr: real; // среднее арифметическое i:
integer; // индекс begin //
ввод массива
// считаем, что если ячейка пустая, то соответствующий
// ей элемент массива равен нулю for
i:= 1 to 5 do if
Length(StringGridl.Cells[i-l,0])<>0 then
a[i] := StrToFloat(StringGridl.Cells[i-1, 0]) else a[i] := 0; //
обработка массива summ
:= 0; for
i :=1 to 5 do summ
:= summ + a[i]; sr := summ / 5; //
вывод результата Label2.Caption
:= 'Сумма элементов: ' + FloatToStr(summ) +
#13+ 'Среднее арифметическое: ' + FloatToStr(sr); end; '/ Функция обеспечивает ввод в ячейку только допустимых символов procedure TForm1.StringGridlKeyPress(Sender: TObject; var Key: Char); begin case
Key of #8,'0'..'9'
: ; // цифры и <Backspace> #13:
// клавиша <Enter> if
StringGridl.Col < StringGridl.ColCount - 1 then StringGridl.Col := StringGridl.Col + 1; '.',',': // разделитель целой и дробной частей числа begin if
Key <> DecimalSeparator then Key
:= DecimalSeparator; // заменим разделитель
// на допустимый if
Pos(StringGridl.Cells[StringGridl.Col,0], DecimalSeparator) <> 0 then
Key := Chr(O); // запрет ввода второго
// разделителя end; ' -' : // минус можно ввести только первым символом, //
т. е. когда ячейка пустая if Length(StringGrid1.Cells[StringGrid1.Col, 0]) <>0 then
Key := Chr(0) ; else
// остальные символы запрещены key := Chr(0); end; end; end. Рубрика: Глава 5. Массивы
HTML 5: пять вещей вызывающих особый интер....
HTML 5 — это грядущее обновление гипертекстового языка разметки, основного способа создания контента для размещения его во всемирной паутине. Разработка HTML остановилась в 1999 году, на версии HTML 4.01 и с тех пор web-содержимое изменилось так, что текущие спецификации HTML перестали соответствовать сегодняшним требованиям. HTML 5 нацелен на то, чтобы увеличить функциональную совместимость HTML и соответствовать растущим требованиям разнообразного и смешанного web-контента. HTML 5 так же нацелен на устранение недостатков четвертой версии. В этой статье мы взглянем на 5 новых интересных вещей в HTML 5.
Подробнее... |
Рубрика: Html
| Добавлено: 22.12.2008
asp.net: ListView с разных сторон.
Элемент управления ListView был представлен в .Net Framework 3.5 как замена устаревшему GridView. Новый элемент имеет более расширенный функционал, чем его предшественник, но в тоже время лишен некоторых внутренних механизмов, что впрочем целиком следствие из расширенной универсальности ListView. Среди отличий ListView и GridView можно назвать и гибкую настройку разметки, что позволяет выводить данные не только в табличном виде, но и вообще в любом каком пожелает программист. Благодаря шаблонам ItemTemplate, EditItemTemplate, InsertItemTeplate можно настроить внешний вид при любом из состояний ListView: редактировании или выборе элемента.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Создание кросс-таб отчета в Stimulsoft Rep....
Компания Стимулсофт предоставляет для разработчиков мощный набор инструментов для создания отчетов для Microsoft Visual Studio .Net 2005 и 2008; эти инструменты доступны как для Windows Forms, так и для Web Forms. Это генератор отчетов Stimulsoft Reports.Net. Генератор отчетов Stimulsoft Reports.Net имеет ряд особенностей: простая работа с дизайнером отчетов, полная поддержка экспорта в PDF, Word, Excel и многие другие форматы. Crystal Report и Microsoft Reporting Service – очень хорошие программные продукты для повседневной работы, но, если Вам необходимо создать отчеты с поддержкой кросс-табов, drill down, Ajax, штрих-кодов и возможностью подключения одновременно более одного источника данных, то Stimulsoft Reports.Net поможет Вам сэкономить массу времени. Также, данный генератор отчетов позволяет пользователям создавать свои собственные отчеты любой сложности. И все эти особенности делают Stimulsoft Reports.Net хорошим выбором в сфере программных продуктов для Business Intelligence.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|