Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Уничтожение динамического TImage [D7, WinXP]


Страницы:   1 2

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 у формы.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо