Две последние лабы(условия) (TListBox свойства и методы)

Посмотреть архив целиком

К упр КЛАССЫ-ИНКАПСУЛЯЦИЯ + СРЕДА DELPHI 2005

ЗАДАНИЕ

1.Создать модуль STACK с классом TStek (см программу) для работы со стеком на основе массива FM вещественных чисел, его методы и свойство:

Create – создание объекта и обнуление поля FI,

PUSH – функцию, добавляющую значение параметра в стек и возвращающую значение True, если массив еще не заполнен, а иначе – значение False.

POP – функцию, перемещающую значение с вершины стека в выходной параметр и возвращающую значение True, если стек не пуст, а иначе – значение False.

I – свойство для чтения и записи в поле FI индекса в массиве FM, соответствующего вершине стека.

2. Создать форму вида

и обработчики событий для выполнения следующих работ:

  • создание объектов Stek1 и Stek2 типа Tstek при создании формы;

  • добавление, если возможно, числа, введенного в поле под заголовком ПОЛЕ ВВОДА ЧИСЛА в Stek1 и отображение его в очередной строке списка под заголовком СПИСОК 1 и в поле под заголовком ПОЛЕ ВЫВОДА, иначе – вывод в поле под заголовком ПОЛЕ ВЫВОДА сообщения о причине ошибки;

  • удаление из стека Stek1, если он не пуст, числа с вершины, его отображения в списке под заголовком СПИСОК 1 и вывод в поле под заголовком ПОЛЕ ВЫВОДА, иначе – вывод в это поле сообщения СТЕК ПУСТ!;

  • перемещение с вершины стека в стек при щелчке на кнопке Элемент Стека 1 -> в Стек 2.

Edit1.SetFocus - Edit1 получит фокус ввода

Edit1.SelectAll – выделить весь текст Edit1

ListBox1.Items.Strings[k] Текст k-го элемента списка

ListBox1.Items.Count – 1 Индекс последнего элемента списка

ListBox1.Items.Add(IntToStr(FileSize(F))); Добавить эл-т в конец списка

ListBox1.Items.Delete(ListBox1.Items.Count-1); Удалить последний эл-т

ListBox1.Clear; Очистить список

unit Unit2; //МОДУЛЬ ОПИСАНИЯ ТИПА СТЕКА

interface

const nM=5;

type TM=array[1..nM] of real;

TStek = class //КЛАСС СТЕКА

Private FM:TM; FI:integer;

Public

constructor Create;

property I:integer read FI write FI;

function PUSH(Value:real):boolean;

function POP(var Value:real):boolean;

end;//TStek class

implementation

function TStek.PUSH(Value:real):boolean;

begin Result:=false;

if FI<(SizeOf(TM) div SizeOf(real)) then begin

Fi:=Fi+1; FM[Fi]:=Value; Result:=true;end

end;//procedure TStek.PUSH(Value:TZ);

function TStek.POP(var Value:real):boolean;

begin Result:=false;

if FI>0 then begin

Value:=FM[Fi]; Fi:=Fi-1; Result:=true;end

end;//procedure TStek.PUSH(Value:TZ);

constructor TStek.Create;

begin //inherited create;//здесь можно не использовать

FI:=0; end;//constructor TStek.create; end.

unit Unit1;//МОДУЛЬ ФОРМЫ

interface

uses Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms, Dialogs, StdCtrls;

Const nM=5;

type

TForm1 = class(TForm)

Edit1: TEdit; Edit2: TEdit;

Button1: TButton; Button2: TButton; Button3: TButton;

Button4: TButton; Button5: TButton; Button6: TButton;

ListBox1: TListBox; ListBox2: TListBox;

Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;//TForm1 class

var Form1: TForm1; Stek1, Stek2:TStek;

implementation{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var r:real; s:string; k:integer;

begin

s:=edit1.Text;

val(s,r,k);

if k<>0 then begin

Label1.Caption:= ‘ОШИБКА ВВОДА ЧИСЛА! ';

end

else

if Stek1.PUSH(r)then begin

edit2.Text:=FloatToStr(r);

ListBox1.Items.Add(s);

Edit1.SetFocus; Edit1.SelectAll;

end

else

Form1.Edit2.Text:= 'СТЕК ПЕРЕПОЛНЕН!';

end;//procedure TForm1.Button1Click

procedure TForm1.FormCreate(Sender: TObject);

begin

Stek1:=TStek.Create;

Stek2:=TStek.Create;

end;//procedure TForm1.FormCreate(Sender: TObject)

procedure TForm1.Button3Click(Sender: TObject);

var r:real;

begin

if Stek1.POP(r)then begin

ListBox1.Items.Delete(ListBox1.Items.Count-1);

edit2.Text:=FloatToStr(r);

Edit1.SetFocus; Edit1.SelectAll;

end

else

Form1.Edit2.Text:= 'СТЕК ПУСТ!';

end;//procedure TForm1.Button3Click(Sender: TObject)

procedure TForm1.Button4Click(Sender: TObject);

begin

close;

end;//procedure TForm1.Button4Click(Sender: TObject)

procedure TForm1.Button2Click(Sender: TObject);

var r:real; s:string;

begin

if Stek1.POP(r)then begin

Stek2.PUSH(r);

edit2.Text:=FloatToStr(r);

ListBox2.Items.Add(FloatToStr(r));

ListBox1.Items.Delete(ListBox1.Items.Count-1);

end

else

Form1.Edit2.Text:= 'СТЕК 1 ПУСТ!';

end;//procedure TForm1.Button2Click

procedure TForm1.Button5Click(Sender: TObject);

begin

ListBox1.Clear;

Edit1.SetFocus; Edit1.SelectAll;

end;//procedure TForm1.Button5Click

procedure TForm1.Button6Click(Sender: TObject);

begin

ListBox2.Clear;

Edit1.SetFocus; Edit1.SelectAll;

end;// procedure TForm1.Button6Click

end.


Случайные файлы

Файл
104441.rtf
5515.rtf
Задание 78Б.doc
136646.rtf
110636.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.