type
TForm1 = class (TForm)
...
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
ImageList: TObjectList; // по совету mfender
procedure CreateImages;
// Это св-во для удобства доступа к TImage
property Images[Index: Integer]: TImage read GetImage;
function GetImage(Index: Integer): TImage; // inline; // Если работаешь в BDS 2006
...
public
// Пример, как работать...
procedure ShowImage(Index: Integer; DoShow: boolean);
end;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
// Создаем список
ImageList:=TObjectList.Create(false);
// OwnsObjects = false, т.к. память TImage корректно освободит сама форма
CreateImages;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
// Освобождаем память, занятую списком
ImageList.Free;
end;
procedure TForm1.CreateImages;
var i: Integer;
newImage: TImage;
begin
// Создаем 10 TImage...
for i:=0 to 9 do
begin
newImage:=TImage.Create(Self);
with newImage do
begin
Parent:=Self;
Visible:=false; // По умолчанию - невидимый
// ... здесь можно настроить др. св-ва - позиция, размеры,
// собственно загрузить сам рисунок в компонент
end;
ImageList.Add(newImage);
end;
end;
function TForm1.GetImage(Index: Integer): TImage;
begin
Result:=ImageList[Index] as TImage;
end;
procedure TForm1.ShowImage(Index: Integer; DoShow: boolean);
begin
Images[Index].Visible:=DoShow;
end;
создание объектов
image:array[1..10]:Timage;
а дальше как их вызывать,показывать на экране?
А лучше для этого использовать всё-таки то, что есть - TObjectList, а не изобретать велосипед.
Ксати - его можно разместить прямо на форме, и не мучиться с созданием/удалением
мне именно нужно что бы они объекты создавались программно!
вот у меня была идея.по поводу создания одного объекта.
comb:Tcombobox;
....
comb:=Tcombobox.create;
// ну тут ещё задаём параметры
....
только вот что то не работает.код то правельный но на экране отобразить не могу.
подскажите что нибудь
Сделай ImageList полем своего объекта, и создавай в нём программно сколько угодно рисунков.
Не забудь, что если требуется создать визуальный компонент, то он должен быть производным от соответствующего компонента (TWinControl), и в качестве владельца иметь форму.
Сам ImageList также должен иметь владельцем этот объект
мне именно нужно что бы они объекты создавались программно!
вот у меня была идея.по поводу создания одного объекта.
comb:Tcombobox;
....
comb.create;
// ну тут ещё задаём параметры
....
только вот что то не работает.код то правельный но на экране отобразить не могу.
подскажите что нибудь[/QUOTE]
Если на то пошло, то не comb.create;, а comb:=Tcombobox.create(<экземпляр класса формы>);.
el scorpioда да не нужно мне рисунки создавать!
misha_turist ну да просто ошибочка вышла.
ну и как сделать кто нибудь может внятно сказать?
Используя TImage:
Вопрос задан нормально, а ответы...
Код:
var
images: array[1..100] of TImage;
i : integer;
begin
for i:= 1 to 100 do
images := TImage.Create(); {не знаю какой там точно конструктор у TImage}
end
images: array[1..100] of TImage;
i : integer;
begin
for i:= 1 to 100 do
images := TImage.Create(); {не знаю какой там точно конструктор у TImage}
end
Код:
for i:=Low(imag) to High(image) do
if Assigned(image) then images.free;
if Assigned(image) then images.free;
А для отображения
Код:
images[n].parent:=<эгземпляр объекта на котором размещаеш>;
images[n].left:=...;
images[n].top:=...;
........................
images[n].left:=...;
images[n].top:=...;
........................
Ap0k, а чем мой ответ тебе не понравился, кроме того, что там используется не массив, а список объектов???
вот так бы сразу теперь всё понятно.
Хоть бы спасибо сказал..))))
Всем спасибо.:) хотя мне уже до этого друие люди посказали.но всё равно спасибо.