ќбъ¤вление

ќписание

procedure Pack;

”дал¤ет из списка все пустые (Nil) указатели

function Remove (Item: Pointer) : Integer;

”дал¤ет из списка указатель Item

type TListSortCompare = function (Iteml, Item2: Pointer): Integer;
procedure Sort (Compare: TListSortCompare) ;

-ортирует элементы списка

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

-ассмотрим использование списков указателей на примере приложени¤ DemoList. ѕри щелчке мышью на форме приложени¤ отображаетс¤ точка, которой присваиваетс¤ пор¤дковый номер. ќдновременно координаты и номер точки записываютс¤ в соответствующие свойства создаваемого экземпл¤ра класса TMyPixel. ”казатель на этот объект передаетс¤ в новый элемент списка pixList.

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

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

fЧДЩ,.....Щ,,..Д^ Ч ...,.Д..1;..,,,,.,,^

}Ћистинг7:1:.ћ6дуль^главнрйс|юрм с' о \

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: TDbject) ;
procedureclearBtnClick(Sender: TDbject) ;
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; irrplerrentat ion {$R * .DFM}

const PixColor = clRed;
varCurPixel: TM/Pixel;
constructor TMyPixel. create (X, Y, Num: Integer);
begin
inherited Create;
EX := 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: TM/Pixel;
begin
Pixl := Iteml;
Pix2 := Item2;
Result := Pixl.FX - Pix2.FX;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
PixList := TList.Create;

PixNum := 1; {-четчик точек}

Canvas.Pen.Color := PixColor; {÷вет точки} Canvas.Pen.Width := 3; {-азмер точки}

Canvas.Brush.Color := Color;
(÷вет фона текста равен цвету формы} end;
procedure TMainForm.FormClose(Sender: TObject;
var Action: TCloseAction) ;
begin
PixList.Free;
end;
procedure TMainForm. FormMouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
begin
PixList.Add(TMyPixel.Create(X, Y, PixNum));
Inc(PixNum) ;
end;
procedure TMainForm.ListBtnClick(Sender: TObject) ;
var i: Integer;

begin with PixList do for i := 0 to Count Ч 1 do

begin
CurPixel := Items [i] ;
CurPixel.SetPixel ;
end;
end;

⇐ ѕредыдуща¤ страница| |-ледующа¤ страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Август
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс