Текст модуля Unit1.pas. Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls

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 и запустим его на выполнение.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: