| 
| 
 | Вопрос # 558/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!Подскажите ,пожалуйста, как в delphi
 создавать массивы объектов(например кнопок).
 Заранее спасибо.
 
|  |   Вопрос задал: Меньшиков И.Л. (статус: Посетитель)Вопрос отправлен: 8 мая 2007, 08:04
 Состояние вопроса: открыт, ответов: 3.
 |  Ответ #1. Отвечает эксперт: min@y™ Конечно, никто не спорит, что такая конструкция как Buttons: array of TButton имеет право на существование. Но, имхо, есть способ лучше: можно юзать список TList (список указателей).
 Добавление: List.Add(Button1);
 Удаление: List.Delete(Index);
 Обращение: TButton(List[Index]).Enabled:= False;
 
 И т.д.
 
 Вопросы есть? По мылу!
 
|  | Ответ отправил: min@y™ (статус: Доктор наук)Время отправки: 8 мая 2007, 08:18
 
 |  Ответ #2. Отвечает эксперт: Дмитрий-998 Здравствуйте, Меньшиков И.Л.!
 Есть еще вот такой вариант..
 Приложение:Переключить в обычный режим unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls; type  TForm1 = class(TForm)    Button1: TButton;    procedure Button1Click(Sender: TObject);    procedure ClickButtons(Sender: TObject);  private    { Private declarations }  public    ButtonArray: Array of TButton;    { Public declarations }    procedure AddButtons(CountButton: Integer);  end; var  Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ClickButtons(Sender: TObject);begin  ShowMessage('Ok! Enjoy!');end; procedure TForm1.AddButtons(CountButton: Integer);var  i: Integer;begin  SetLength(ButtonArray, CountButton);  for i := 0 to CountButton - 1 do  begin    ButtonArray[i] := TButton.Create(Application);    ButtonArray[i].Top:= I*30;    ButtonArray[i].Left:= 100;    ButtonArray[i].Width := 75;    ButtonArray[i].Height:= 25;    ButtonArray[i].Visible := true;    ButtonArray[i].Font.Name:= 'Tahoma';    ButtonArray[i].Font.Style:= [fsBold];    ButtonArray[i].Caption := 'Button ' + IntToStr(I);    ButtonArray[i].Tag := i + 100;    ButtonArray[i].OnClick := ClickButtons; //Событие OnClick     ButtonArray[i].Parent := Form1; //Ставим РєРЅРѕРїРєСѓ РЅР° форму  end;end; procedure TForm1.Button1Click(Sender: TObject);begin  AddButtons(5);end; end. 
|  | Ответ отправил: Дмитрий-998 (статус: 1-ый класс)Время отправки: 8 мая 2007, 09:34
 
 |  Ответ #3. Отвечает эксперт: Матвеев Игорь Владимирович Здравствуйте, Меньшиков И.Л.!Объект - экземпляр класса, переменная объекта - указатель на экземпляр, массив переменных объектов - массив указателей, т.е. двойных слов.
 
 А во что там Вы его (массив) обернете: в LongWord, Pointer или непосредственно в TButton, например, зависит только от Вас.
 
 Мини-форум вопросаВсего сообщений: 2; последнее сообщение — 13 октября 2014, 22:56; участников в обсуждении: 2. 
|   | min@y™ (статус: Доктор наук), 8 мая 2007, 08:22 [#1]:Кстати, есть исчо такой список как TObjectList. Предназначен именно для хранения указателей на ОБЪЕКТЫ, т.е. экземпляры классов. Его свойство OwnsObjects: Boolean отвечает за освобождение памяти из-под объектов (вызов их деструкторов) при уничтожении самого TObjectList. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | zvygin1964 (статус: Посетитель), 13 октября 2014, 22:56 [#2]:Ну где, где-же увидеть полноценный пример с TObjectList!!! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |