![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Уничтожение динамического TImage [D7, WinXP]
indiegod © (2009-09-07 00:38:00)Есть несколько TImage, которые создаются кликом по форме. Есть желание создать кнопку "очистить", которая бы убирала все эти TImage.
Вот как создаются эти копоненты:
numrry[i]:=TImage.Create(Form2);
numrry[i].Parent:=Form2;
numrry[i].Visible:=true;
numrry[i].Left:=Mouse.CursorPos.X - 10;
numrry[i].Top:=Mouse.CursorPos.Y - 55;
numrry[i].Height:=25;
numrry[i].Width:=25;
indiegod (2009-09-07 02:05:00) [21]я сказал, допустим, что мячиков
мне нужно выводить на экран в точке изображение
потом одним махом все эти созданные изображения стереть
Германн (2009-09-07 02:03:00) [22]
> indiegod (07.09.09 01:55) [18]
>
> объясняю задачу
> есть картинка. скажем, схематичное изображение футбльного
> поля
> при клике на ней в месте, где находится курсор, должна появится
> картинка с изображением, скажем мячика.
> при клике на кнопке все ранее созданные таким образом изображения
> мячика должны пропасть
>
> так вот как этот мячик нарисовать, я вроде как разобрался
> а вот как эту кучу мячиков убрать?
Какая "куча мячиков на футбольном поле?" Ты опять "объяснил вопрос", но не задачу! На футбольном поле может быть только один мячик!
:)
indiegod (2009-09-07 01:55:00) [23]объясняю задачу
есть картинка. скажем, схематичное изображение футбльного поля
при клике на ней в месте, где находится курсор, должна появится картинка с изображением, скажем мячика.
при клике на кнопке все ранее созданные таким образом изображения мячика должны пропасть
так вот как этот мячик нарисовать, я вроде как разобрался
а вот как эту кучу мячиков убрать?
KilkennyCat (2009-09-07 01:50:00) [24]
> и еще есть ошибка List Index is out of bunds
> Только будь внимателен при удалении, цикл For - to тут не
> подходит. Лучше for - downto или while или repeate-until.
>
>
Германн (2009-09-07 01:49:00) [25]
> indiegod (07.09.09 01:43) [14]
>
> да, кстати, там на форме еще есть имейджи, этот метод их
> тоже стирает
> и еще есть ошибка List Index is out of bunds
>
Ты бы лучше изложил свою задачу.
indiegod (2009-09-07 01:44:00) [26]метод в смысле способ
indiegod (2009-09-07 01:43:00) [27]да, кстати, там на форме еще есть имейджи, этот метод их тоже стирает
и еще есть ошибка List Index is out of bunds
DVM (2009-09-07 01:36:00) [28]
> as TImageList
читать как as TImage
автодополнение однако
DVM (2009-09-07 01:30:00) [29]
procedure TForm1.btn1Click(Sender: TObject);
var
i: Integer;
begin
for i := 0 to ComponentCount - 1 do
begin
if (Components[i] is TImage) then
(Components[i] as TImageList).нужное_свойство_или_метод_имиджа;
end;
end;
Только будь внимателен при удалении, цикл For - to тут не подходит. Лучше for - downto или while или repeate-until.
indiegod (2009-09-07 01:26:00) [30]а список этот он вообще как вызывается?
DVM (2009-09-07 01:19:00) [31]
> а если не через массив создавать, то как присваивать картинку
> компоненту?
Каждый раз надо будет производить поиск нужного имейджа в списке Components по какому то критерию. Можно оформить этот поиск в виде специального метода формы.
indiegod (2009-09-07 01:13:00) [32]
> Ну да, только лучше Free. А вообще твой массив numrry тут
> лишний, т.к. см. [7]
а если не через массив создавать, то как присваивать картинку компоненту?
DVM (2009-09-07 01:06:00) [33]
> т.е простым .Destroy?
Ну да, только лучше Free. А вообще твой массив numrry тут лишний, т.к. см. [7]
DVM (2009-09-07 01:05:00) [34]
> indiegod (07.09.09 01:00) [4]
> а если немного подробней про список у формы?
Когда компонент кладут (создают) на форму(е), он добавляется в список Components, который является свойством формы. Если пройтись по этому списку, то можно выбрать нужные компоненты по какому либо признаку и уничтожить их. Например, таким признаком может быть тип TImage или нечто, положенное в свойство Tag у создаваемых TImage.
indiegod (2009-09-07 01:03:00) [35]
> DVM © (07.09.09 01:02) [5]
> Ну вот тогда запомнив где то максимальное I проходи по своему
> массиву и уничтожай имейджи.
т.е простым .Destroy?
DVM (2009-09-07 01:02:00) [36]
> indiegod (07.09.09 00:59) [3]
Ну вот тогда запомнив где то максимальное I проходи по своему массиву и уничтожай имейджи.
indiegod (2009-09-07 01:00:00) [37]to DVM
а если немного подробней про список у формы?
indiegod (2009-09-07 00:59:00) [38]должен
там стоит после присвоения картинки i:=i+1
правда программа выдает ошибку операции с плавающей точкой
Германн (2009-09-07 00:54:00) [39]
> indiegod (07.09.09 00:38)
>
> Есть несколько TImage, которые создаются кликом по форме.
> Есть желание создать кнопку "очистить", которая бы убирала
> все эти TImage.
> Вот как создаются эти копоненты:
>
Интересно а индекс "i" меняется с каждой новой картинкой или нет?
DVM (2009-09-07 00:42:00) [40]Заведи свой список (TList) куда заноси указатели на все созданные имейджи или воспользуйся встроенным списком Components у формы.