unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
ListBox1: TListBox;
ListBox2: TListBox;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a: array[1..10] of integer;
i, min, max, imax, imin: integer;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Add(Edit1.Text);
i:= i+1;
a[i]:= StrToInt(Edit1.Text);
Edit1.SetFocus
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
i:=0;
ListBox1.Clear;
ListBox2.Clear;
end;
procedure TForm1.Button2Click(Sender: TObject);
var k:integer;
begin
max:= a[1];
imax:= 1;
min:= a[1];
imin:= 1;
for k:= 2 to 10 do
begin
if max < a[k] then
begin
max:= a[k];
imax:= k
end;
if min > a[k] then
begin
min:= a[k];
imin:= k
end;
end;
a[imax]:= min;
a[imin]:= max;
for k:= 1 to 10 do
ListBox2.Items.Add(IntToStr(a[k]));
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = 13 then Button1.SetFocus
end; end.
Пример 4.2
Выполним задание из Примера 4.1 с использованием компонента ComboBox.
Решение
1. Для нового проекта создадим новую папку, например D:\MyProject\CBOX.
2. Откроем новый проект.
3. Со страницы Standard поместим на Form1следующие компоненты: две кнопки Button и два компонента ComboBox.
4. Положим свойство DropDownCount для компонентов ComboBox1 и ComboBox2 равным 10. Дальнейшая последовательность действий аналогична приведенной в решении примера 4.1. Отличия, появляющиеся при написании обработчиков событий, становятся понятными при сравнении программного кода из предыдущего примера и программного кода, приведенного ниже.
Текст модуля Unit1.pas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ComboBox1KeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
A: array[1..10] of integer;
i, min, max, imax, imin: integer;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
ComboBox1.Items.Add(ComboBox1.Text);
i:= i+1;
a[i]:= StrToInt(ComboBox1.Text);
ComboBox1.SetFocus;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
i:=0;
ComboBox1.Clear;
ComboBox2.Clear;
ComboBox1.TabOrder:= 0;
end;
procedure TForm1.Button2Click(Sender: TObject);
var k:integer;
begin
max:= a[1];
imax:= 1;
min:= a[1];
imin:= 1;
for k:= 2 to 10 do
begin
if max < a[k] then
begin
max:= a[k];
imax:= k
end;
if min > a[k] then
begin
min:= a[k];
imin:= k
end;
end;
a[imax]:= min;
a[imin]:= max;
for k:= 1 to 10 do
ComboBox2.Items.Add(IntToStr(a[k]));
ComboBox2.DroppedDown:= true;
end;
procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = 13 then Button1.SetFocus
end;
end.
Таблица StringGrid
В целочисленной матрице А(4, 4) поменять местами первую и последнюю строки. Решение
1. Для нового проекта создадим новую папку, например D:\MyProject\StringGrid.
2. Откроем новый проект, используя команду главного меню File|New|Application.
3. Из страниц Standard и Additional на Form1 поместим два компонента StringGrid и
три компонента Button.
4. С помощью Инспектора Объектов свойствам компонентов StringGrid1 и
StringGrid2 зададим следующие значения:
FixedCols - 0,
FixedRows - 0,
ColCount - 4,
RowCount - 4.
Изменим размеры компонентов StringGrid1 и StringGrid2 таким образом, чтобы в них умещалось 4 строки и 4 столбца.
5. В Инспекторе Объектов для обеих таблиц выберем свойство Options. Войдем в
него с помощью двойного щелчка мыши. Значение флага goEditing сделаем равным True.
6. Для компонентов Button1, Button2 и Button3 зададим значение свойства Caption равным: ‘Решение ‘, ‘Решение 2’ и ‘Очистить’ соответственно.
7. Активизируем кнопку «Решение 1» и создадим следующий обработчик события
OnClick:
procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
begin
for i:= 0 to 3 do
begin
StringGrid2.Cells[i,0]:= StringGrid1.Cells[1,3];
StringGrid2.Cells[i,3]:= StringGrid1.Cells[i,0];
StringGrid2.Cells[i,1]:= StringGrid1.Cells[i,1];
StringGrid2.Cells[i,2]:= StringGrid1.Cells[i,2];
end
end;
Напомним, что нумерация строк и столбцов начинается с 0, а в свойстве Cells[j,i] первый индекс обозначает номер столбца, а второй — номер строки.
8. Исходная задача может быть решена при помощи свойства Rows. Активизируем
кнопку «Решение 2» и в заготовке обработчика события OnClick разместим следующий код:
procedure TForml.Button2Click(Sender: TObject);
begin
StringGxid2.Rows[0]:= StringGrid1.Rows[3];
StringGrid2.Rows[1]:= StringGrid1.Rows[1];
StringGrid2.Rows[2]:= StringGrid1.Rows[2];
StringGrid2.Rows[3]:= StringGrid1.Rows[0];
end;
9. Для очистки второй таблицы предназначена кнопка «Очистить». Активизируем её
и в заготовку обработчика события поместим следующий код:
procedure TForm1.Button3Click(Sender: TObject);
var i, j: Integer;
begin
for i:= 0 to 3 do
for j:= 0 to 3 do
StringGrid2.Cells[ j, i ]:= ‘‘
end;
10.Сохраним проект при помощи команды главного меню File|Save All и запустим его на выполнение.