Самоучитель по Delphi 7 для профессионалов


Пример использования списка указателей



Рассмотрим использование списков указателей на примере приложения DemoList. При щелчке мышью на форме приложения отображается точка, которой присваивается порядковый номер. Одновременно координаты и номер точки записываются в соответствующие свойства создаваемого экземпляра класса TMypixel. Указатель на этот объект передается в новый элемент списка pixList.

В результате после очистки формы всю последовательность точек можно восстановить, использовав указатели на объекты точек из списка.

Список точек можно отсортировать по координате X в порядке возрастания.

Листинг 7.1. Модуль главной формы проекта DemoList

unit Main;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, 

Dialogs, StdCtrls, Buttons;

type

TMainForm = class(TForm) 

ListBtn: TBitBtn;

  ClearBtn: TBitBtn; 

DelBtn: TBitBtn;

  SortBtn: TBitBtn;

procedure FormCreate(Sender: TObject); 

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormMouseDown(Sender: TObject; Button: TMouseButton;

  Shift: TShiftState; X, Y: Integer);

procedure ListBtnClick(Sender: TObject);

procedure ClearBtnClick(Sender: TObject);

procedure DelBtnClick(Sender: TObject);

procedure SortBtnClick(Sender: TObject); 

private

PixList: TList;

PixNum: Integer; public

{ Public declarations } 

end;

TMyPixel = class(TObject)

FX: Integer;

FY: Integer;

FText: Integer;

constructor Create(X, Y, Num: Integer);

procedure SetPixel; 

end;

var

MainForm: TMainForm;

implementation

{$R *.DFM}

const PixColor = clRed;

var CurPixel: TMyPixel;

constructor TMyPixel.Create(X, Y, Num: Integer); 

begin

inherited Create;

FX := X;

FY := Y;

FText := Num;

SetPixel;

  end;

procedure TMyPixel.SetPixel; 

begin

MainForm.Canvas.PolyLine([Point(FX, FY), Point(FX, FY)]);

MainForm.Canvas.TextOut(FX +1, FY + 1, IntToStr(FText)); 

end;

function PixCompare(Iteml, Item2: Pointer): Integer;

var Pixl, Pix2: TMyPixel;


Начало  Назад  Вперед



Книжный магазин