9.1.1. Размещение компонентов на Форме
Разместим на Форме компоненты Label, SpinEdit, Button и StringGrid.
Label
SpinEdit
Label
StringGrid
Button
LabelРис. 9.1
Сохраним модуль под именем UnDinMas (текст модуля приведен в п.9.1.3).
Двойным нажатием клавиши “мыши” на Форме и кнопке Button1 создайте соответствующие процедуры обработки событий. Пользуясь текстом модуля UnDinMas, внимательно наберите операторы этих процедур.
При желании можно создать процедуру, которая будет выделять заданным цветом границы ячеек с наименьшим и наибольшим значениями в компоненте StringGrid. Для создания такой процедуры сделайте активным компонент StringGrid и на странице Events(события) Инспектора Объектов дважды щелкните “мышью” в правой части события OnDrawCell. В ответ Delphi создаст обработчик этого события – процедуру procedure TForm1.StringGrid1DrawCell и установит курсор между операторами begin и end этой процедуры. Используя текст модуля UnDinMas, внимательно наберите операторы процедуры TForm1.StringGrid1DrawCell.
9.1.3 Текст модуля UnDinMasUnit UnDinMas;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Spin, Grids, Buttons;
type
TForm1 = class(TForm)
Label1: TLabel;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
Label8: TLabel;
StringGrid1: TStringGrid;
Label2: TLabel;
Label5: TLabel;
Label3: TLabel;
Button1: TButton;
Label4: TLabel;
Label6: TLabel;
Label7: TLabel;
Label9: TLabel;
procedure FormCreate(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
procedure StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
Rect: TRect; State: TGridDrawState);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
Type
Mas=array[1..1] of integer; // массив целочисленных значений
pMas=array[1..1] of ^mas; // массив указателей
var // объявление глобальных переменных
pA:^pMas; // указатель на массив указателей
m,n,max,min:integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
m:=6; // начальное значение m
n:=8; // начальное значение n
SpinEdit1.Text:='6';
SpinEdit2.Text:='8';
StringGrid1.RowCount:=m; // количество строк
StringGrid1.ColCount:=n; // количество столбцов
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
m:=StrToInt(SpinEdit1.Text);// m присваивается содержимое поля редактора
StringGrid1.RowCount:=m;
end;
procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
n:=StrToInt(SpinEdit2.Text);// n присваивается содержимое поля редактора
StringGrid1.ColCount:=n;
end;
procedure TForm1.Button1Click(Sender: TObject);
label 1;
var
i,j,k,l,r:integer;
begin
Randomize; // инициализация датчика случайных чисел
GetMem(pA,4*m); // выделение памяти для массива из m указателей
for i :=1 to m do
begin // формирование i-й строки массива
{ Выделение памяти для n элементов i-й строки}
GetMem(pA^[i],SizeOf(integer)*n);
pA^[1]^[1]:=Random(1000);// случайное целое число занести в массив
for j:=1 to n do
begin // формирование j-го элемента строки
1: r:=Random(1000); // генерирование случайного числа
for k:=1 to i do
for l:=1 to j do
if r=pA^[k]^[l] then // если такое число уже есть в массиве тогда...
goto 1;
pA^[i]^[j]:=r; // случайное число занести в массив
end;
end;
for i:=1 to m do // элементы массива занести в ячейки
for j:=1 to n do // компонента StringGrid1
StringGrid1.Cells[j-1,i-1]:=IntToStr(pA^[i]^[j]);
{ Поиск min и max значений среди элементов массива}
max:=pA^[1]^[1];
min:=max;
for i:=1 to m do
for j:=1 to n do
if pA^[i]^[j]max then
max:=pA^[i]^[j];
Label7.Caption:=IntToStr(min); // вывод min значения
Label9.Caption:=IntToStr(max); // вывод max значения
for i:=1 to m do
{ Освобожение памяти, занимаемой n элементами i-й строки}
FreeMem(pA^[i],SizeOf(integer)*n);
{ Освобождение памяти, занимаемой массивом из m указателей}
FreeMem(pA,4*m);
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
Rect: TRect; State: TGridDrawState);
begin
with StringGrid1.Canvas do
if StringGrid1.Cells[Col,Row]=IntToStr(min) then // если элемент ячейки
begin // равен min тогда...
Brush.Color:=clGreen; // установить цвет кисти зеленый
FrameRect(Rect); // выделить границы ячейки заданным цветом
end
else
if StringGrid1.Cells[Col,Row]=IntToStr(max) then // если элемент ячейки
begin // равен max тогда...
Brush.Color:=clRed; // установить цвет кисти красный
FrameRect(Rect); // выделить границы ячейки заданным цветом
end
end;
end.
9.2 Использование динамических списковЗадание2: создать приложение для формирования стека, который заполняется путем ввода целых положительных чисел с клавиатуры. Как только будет введено первое отрицательное число, содержимое стека выводится на панель интерфейса, а память занимаемая его элементами освобождается.
Один из возможных вариантов панели интерфейса создаваемого приложения показан на рис.9.2.
... в среде Delphi). Задачи использовались как с данного сайта, так и из других источников – книг и семинарских занятиях по информатике в МГОУ. Курс завершается разработкой игры. Программное обеспечение: свободно распространяемая версия объектно-ориентированной среды программирования Delphi. Методы обучения: метод проектов, лекции, проблемный метод, частично-поисковый метод. Контроль знаний и умений ...
... // ... if(condition1) { j = 4; goto label1; } // ... for(j = 0; j < 10; j++) { // ... label1: // ... if(condition2) { i = 6; goto label2; } } // ... label2: // ... } 2.2 Разработка программы В среде программирования Borland Delphi создадим новое приложение (пункт меню File New Application). ...
... химических соединений, которые могут представлять ценность как сырье и использоваться в виде дополнения к шахте. 7. заключение В результате дипломного проектирования была разработана программа «АРМ менеджера по продажам в автосалоне «A-Motors», предназначенная для для регистрации и ведения учета продаж автомобилей. Программа предназначена для того, чтобы облегчить рутинный труд менеджера ...
... ситуация другая. Учитель на уроке работает с 10-15 учащимися. Осуществить должный контроль за усвоением материала всеми учащимися, если в классе есть компьютеры, без привлечения автоматизированных средств обучения затруднительно. Автором разработана обучающая программа «Учимся программировать на Паскале». Программа написана на языке Object Pascal в среде Delphi 6 и может работать на компьютерах ...
0 комментариев