Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2010, 07:34   #11
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Цитата:
Добавлять я нашёл а как удалять?
Вот тебе описание:

Класс TList

Класс TList — универсальный список. Он представляет собой массив нетипированных указателей и поэтому годится для хранения набора любых, в том числе разнотипных, данных и объектов. При добавлении/удалении в список данные не создаются и не уничтожаются — эта обязанность лежит на программисте.

Приведем доступные ему методы и свойства класса:

property Items[Index: Integer]: Pointer; Возвращает указатель на содержимое элемента списка с индексом Index. Это свойство является векторным свойством, принимаемым по умолчанию, и его имя можно при записи опускать.

property Count: Integer; Определяет число элементов в списке.

property Capacity: Integer; Определяет максимальное число элементов в списке. Оно может изменяться как явно — пользователем, так и при добавлении элементов в список, в том случае, когда Count>=Capacity. Максимальная емкость списка — 16380 элементов.

Управляют списком следующие методы:

function Add(Item: Pointer): Integer; Добавляет в конец списка элемент, который будет равен Item (т. е. указывать на те же данные).

function Remove(Item: Pointer): Integer; Удаляет из списка элемент, который равен Item.

procedure Insert(Index: Integer; Item: Pointer) ; Вставляет элемент, равный Item, перед элементом с индексом Index.

procedure Delete(Index: Integer); Удаляет из списка элемент с индексом Index.

procedure Clear; Очищает список, устанавливая величины Count и Capacity в 0.

procedure Exchange(Indexl, Index2: Integer); Меняет местами элементы списка с индексами Indexl и Index2.

function Expand: TList; При соблюдении равенства Count=Capacity расширяет список. При емкости списка менее пяти элементов, он по умолчанию расширяется на четыре элемента, при пяти-восьми — на восемь, более восьми — на шестнадцать.

function First: Pointer; function Last: Pointer; Возвращают значения первого п последнего (с индексом Count-1) элементов списка соответственно.

function IndexOf(Item: Pointer): Integer; Возвращает индекс элемента, равного Item.

procedure Move(CurIndex, Newlndex: Integer) ; Перемещает элемент списка с положения Curlndex в положение Newlndex.

procedure Pack; Упаковывает список, сдвигая элементы к началу на пустующие места.

Наконец, если приведенных методов почему-либо недостаточно, то свойство

property List: pPointerList;

pPointerList = ^TPointerList;

TPointerList = array[0..65520 div SizeOf(Pointer)] of Pointer;

возвращает указатель непосредственно на список указателен ((ко) означает, что свойство доступно только для чтения).
VintProg вне форума Ответить с цитированием
Старый 18.07.2010, 12:59   #12
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Спасибо всем кто откликнулся вот как я это сделал
Код:
var
  Form1: TForm1;
  kom:Tframe2;
  kom2:Tframe3;
  kom3:Tframe5;
  komn,komn2:int64;
  SearchRec:TSearchRec;
  nagata,pervaya,liniya:boolean;
  x2,y2,pervaya_x,pervaya_y,pervaya2_x,pervaya2_y,obekt:integer;
  Tep,fileot:Tinifile;
  komponent:Tstringlist;
  kartliniya:Tpicture;
  komponentlist:Tlist;
  tempkomponet:Tcomponent;
implementation
{--------------------------------------------------------------}
procedure Tform1.dobavlenienov(karput:string;Owner:Tcomponent;owner2:TwinControl;topnov,leftnov:integer);
var
WindowRgn: HRGN;
kar:Tpicture;
begin
kar:=Tpicture.Create;
kar.LoadFromFile(karput);
 kom2:=TFrame3.Create(Owner);
 komponentlist.Add(kom2);
 kom2.Name:='Frame__'+inttostr(komn2);
 kom2.Tag:=komn2;
 komn2:=komn2+1;
 kom2.Parent:=Owner2;
 kom2.Left:=leftnov;kom2.Top:=topnov;
 kom2.Image1.Picture:=kar;
 kom2.Hint:=extractfilename(karput);
 komponent.Add(inttostr(komn2));
 kom2.Width:=105;
 kom2.Height:=105;
 form1.Image3.Width:=125;
 form1.Image3.Height:=125;
 {
form1.image3.left:=leftnov-10;
form1.image3.top:=topnov-10;
form1.image3.show;      }
 //kom2.Image1.Transparent:=true;
//windowRgn := CreateRgnFromBitmap(kom2.Image1.Picture.Bitmap);
//SetWindowRgn(kom2.Handle, WindowRgn, True);
end;
{------------------------------------------------------------------}
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=46 then begin
tempkomponet:=komponentlist.items[obekt];
FreeAndNil(tempkomponet);

image3.Hide;
end;
end;
{-----------------------------------------------------}
procedure TFrame3.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 nagata:=true;
x2:=x;
y2:=y;
if Parent=form1.sScrollBox1 then begin
form1.image3.left:=left-10;
form1.image3.top:=top-10;
form1.image3.show;
//form1.Image3.SendToBack;
end;
obekt:=tag;
end;
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 18.07.2010, 13:24   #13
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Что хорошо помогла моя помощь?
VintProg вне форума Ответить с цитированием
Старый 18.07.2010, 18:56   #14
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Цитата:
Что хорошо помогла моя помощь?
Реально! А в этот лист можно что угодно кидать?
А клас pointer я так понимаю всеобщий да?
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 19.07.2010, 06:33   #15
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Цитата:
А клас pointer я так понимаю всеобщий да?
Да, что угодно можно кидать, указатели на что угодно!
VintProg вне форума Ответить с цитированием
Старый 19.07.2010, 08:17   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вообще-то, господа корнеты, для менеджмента компонентов и контролов придуман TObjectList (наследник TList более приспособленный для обьектов).
Например одно из его преимуществ в том что удаляемый из него обьект не просто выбрасывается из списка, а к тому же вызывается его деструктор, что способствует благой очистки памяти от мусора, чего TList делать не умеет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование Self.Handle при создании и уничтожении компонента spamer Общие вопросы Delphi 19 11.03.2010 00:51
Как узнать handle окна имея handle обного из его компонентов SeRhy Win Api 2 18.10.2009 19:31
Как узнать HANDLE компонента который находится под курсором мыши SeRhy Общие вопросы Delphi 7 04.02.2009 20:39
Как нажать на Button в чужом приложении зная его HANDLE SeRhy Win Api 2 04.02.2009 13:43
Создание компонента, определить handle носителя. Deight Компоненты Delphi 6 22.11.2008 09:45