Форум: "Начинающим";
Текущий архив: 2009.11.01;
Скачать: [xml.tar.bz2];
ВнизУничтожение динамического TImage Найти похожие ветки
← →
indiegod (2009-09-07 00:38) [0]Есть несколько 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;
← →
DVM © (2009-09-07 00:42) [1]Заведи свой список (TList) куда заноси указатели на все созданные имейджи или воспользуйся встроенным списком Components у формы.
← →
Германн © (2009-09-07 00:54) [2]
> indiegod (07.09.09 00:38)
>
> Есть несколько TImage, которые создаются кликом по форме.
> Есть желание создать кнопку "очистить", которая бы убирала
> все эти TImage.
> Вот как создаются эти копоненты:
>
Интересно а индекс "i" меняется с каждой новой картинкой или нет?
← →
indiegod (2009-09-07 00:59) [3]должен
там стоит после присвоения картинки i:=i+1
правда программа выдает ошибку операции с плавающей точкой
← →
indiegod (2009-09-07 01:00) [4]to DVM
а если немного подробней про список у формы?
← →
DVM © (2009-09-07 01:02) [5]
> indiegod (07.09.09 00:59) [3]
Ну вот тогда запомнив где то максимальное I проходи по своему массиву и уничтожай имейджи.
← →
indiegod (2009-09-07 01:03) [6]
> DVM © (07.09.09 01:02) [5]
> Ну вот тогда запомнив где то максимальное I проходи по своему
> массиву и уничтожай имейджи.
т.е простым .Destroy?
← →
DVM © (2009-09-07 01:05) [7]
> indiegod (07.09.09 01:00) [4]
> а если немного подробней про список у формы?
Когда компонент кладут (создают) на форму(е), он добавляется в список Components, который является свойством формы. Если пройтись по этому списку, то можно выбрать нужные компоненты по какому либо признаку и уничтожить их. Например, таким признаком может быть тип TImage или нечто, положенное в свойство Tag у создаваемых TImage.
← →
DVM © (2009-09-07 01:06) [8]
> т.е простым .Destroy?
Ну да, только лучше Free. А вообще твой массив numrry тут лишний, т.к. см. [7]
← →
indiegod (2009-09-07 01:13) [9]
> Ну да, только лучше Free. А вообще твой массив numrry тут
> лишний, т.к. см. [7]
а если не через массив создавать, то как присваивать картинку компоненту?
← →
DVM © (2009-09-07 01:19) [10]
> а если не через массив создавать, то как присваивать картинку
> компоненту?
Каждый раз надо будет производить поиск нужного имейджа в списке Components по какому то критерию. Можно оформить этот поиск в виде специального метода формы.
← →
indiegod (2009-09-07 01:26) [11]а список этот он вообще как вызывается?
← →
DVM © (2009-09-07 01:30) [12]
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.
← →
DVM © (2009-09-07 01:36) [13]
> as TImageList
читать как as TImage
автодополнение однако
← →
indiegod (2009-09-07 01:43) [14]да, кстати, там на форме еще есть имейджи, этот метод их тоже стирает
и еще есть ошибка List Index is out of bunds
← →
indiegod (2009-09-07 01:44) [15]метод в смысле способ
← →
Германн © (2009-09-07 01:49) [16]
> indiegod (07.09.09 01:43) [14]
>
> да, кстати, там на форме еще есть имейджи, этот метод их
> тоже стирает
> и еще есть ошибка List Index is out of bunds
>
Ты бы лучше изложил свою задачу.
← →
KilkennyCat © (2009-09-07 01:50) [17]
> и еще есть ошибка List Index is out of bunds
> Только будь внимателен при удалении, цикл For - to тут не
> подходит. Лучше for - downto или while или repeate-until.
>
>
← →
indiegod (2009-09-07 01:55) [18]объясняю задачу
есть картинка. скажем, схематичное изображение футбльного поля
при клике на ней в месте, где находится курсор, должна появится картинка с изображением, скажем мячика.
при клике на кнопке все ранее созданные таким образом изображения мячика должны пропасть
так вот как этот мячик нарисовать, я вроде как разобрался
а вот как эту кучу мячиков убрать?
← →
Германн © (2009-09-07 02:03) [19]
> indiegod (07.09.09 01:55) [18]
>
> объясняю задачу
> есть картинка. скажем, схематичное изображение футбльного
> поля
> при клике на ней в месте, где находится курсор, должна появится
> картинка с изображением, скажем мячика.
> при клике на кнопке все ранее созданные таким образом изображения
> мячика должны пропасть
>
> так вот как этот мячик нарисовать, я вроде как разобрался
> а вот как эту кучу мячиков убрать?
Какая "куча мячиков на футбольном поле?" Ты опять "объяснил вопрос", но не задачу! На футбольном поле может быть только один мячик!
:)
← →
indiegod (2009-09-07 02:05) [20]я сказал, допустим, что мячиков
мне нужно выводить на экран в точке изображение
потом одним махом все эти созданные изображения стереть
← →
Германн © (2009-09-07 02:11) [21]
> indiegod (07.09.09 02:05) [20]
>
> я сказал, допустим, что мячиков
> мне нужно выводить на экран в точке изображение
Иногда лучше жевать чем говорить.
← →
indiegod (2009-09-07 02:15) [22]оххх
ладно.
объясняю еще раз
есть схема поля. допустим, игрок №7 ударил с линии штрафной. мне нужно поставить точку с его номером в месте, откуда он бил. я кликаю по месту на картинке с полем, у меня генерится картинка с изображением футболки с номером 7
в конце тайма мне надо стереть все данные за прошлый тайм.
вопрос только в ом как?
← →
Германн © (2009-09-07 02:21) [23]
> объясняю еще раз
>
> есть схема поля. допустим, игрок №7 ударил с линии штрафной.
> мне нужно поставить точку с его номером в месте, откуда
> он бил. я кликаю по месту на картинке с полем, у меня генерится
> картинка с изображением футболки с номером 7
>
> в конце тайма мне надо стереть все данные за прошлый тайм.
>
> вопрос только в ом как?
>
Задачу, извини, так и не понял.
Но могу сказать, что совет
> DVM © (07.09.09 00:42) [1]
>
> Заведи свой список (TList) куда заноси указатели на все
> созданные имейджи
гарантировано сработает.
← →
KilkennyCat © (2009-09-07 02:23) [24]Я бы сделал так. Имеем три TBitMap и один массив координат.
TBitMap1 содержит фон , поле, например.
TBitmap2 содержит рисунок, мячика, например.
TBitmap3 - тут мы рисуем.
Итог:
Рисование:
Кидаем TBitMap1 на TBitMap3
Бежим по массиву координат и смотрим, если что-то там есть - по координатам кидаем TBitmap2 на TBitmap3
Кидаем TBitMap3 на канву контрола, который у нас для отображения, например TPanel.
Обработка клика:
Запоминаем в массив координату клика и убегаем на Рисование.
Удаление:
То же, что и рисование, но по массиву не бежим.
Все. И не надо кучи визуальных компонентов.
← →
Германн © (2009-09-07 02:44) [25]
> KilkennyCat © (07.09.09 02:23) [24]
>
> Я бы сделал так.
Некоторые Питерцы делают ещё проще, кидают шарфик в морду.
:)
← →
KilkennyCat © (2009-09-07 02:50) [26]гм... у мня нет шарфика.
← →
Германн © (2009-09-07 03:04) [27]
> KilkennyCat © (07.09.09 02:50) [26]
>
> гм... у мня нет шарфика.
>
Ну и слава богу! Ты ведь в первую очередь "нормальный человек". Да и во вторую тоже. И во все следующие.
Но ведь автор привёл некий "футбольный" пример! Но так и не удосужился описать саму задачу.
P.S.
Я сам когда-то давно занимался спортом, спортивными играми на любительском уровне.
← →
KilkennyCat © (2009-09-07 03:11) [28]не знаю. вполне понятная задача. имеем некое поле, на которое можно в произвольном порядке отрисовать некие объекты, при необходимости - стереть все.
← →
Германн © (2009-09-07 03:15) [29]
> KilkennyCat © (07.09.09 03:11) [28]
>
> не знаю. вполне понятная задача. имеем некое поле, на которое
> можно в произвольном порядке отрисовать некие объекты, при
> необходимости - стереть все.
>
Дык "все" автор стирать не хочет!
См. indiegod (07.09.09 01:43) [14]
Но про футбол я молчу!
← →
KilkennyCat © (2009-09-07 03:20) [30]Можно и не все.
http://www.kilkennycat.ru/_SocioOpros.zip
Здесь небольшой пример, как коряво (ибо тогда я тогда я еще учился), но работоспособно можно работать по вышеуказанному мной способу. Включая перетаскивание мышкой. Требует RxLibrary
← →
Anatoly Podgoretsky © (2009-09-07 09:17) [31]
> правда программа выдает ошибку операции с плавающей точкой
Надо бы сначала исправить ошибку, а то вместо одной будет уже две, собственно так это и произошло.
← →
Плохиш © (2009-09-07 10:35) [32]
> Германн © (07.09.09 01:49) [16]
> Ты бы лучше изложил свою задачу.
Научиться кодить за счёт времени обитателей форума.
> Германн © (07.09.09 02:03) [19]
> На футбольном поле может быть только один мячик!
Хоттабыч с тобой не согласен ;-)
← →
KilkennyCat © (2009-09-07 11:21) [33]
> Плохиш © (07.09.09 10:35) [32]
> Научиться кодить за счёт времени обитателей форума.
Разве это плохо?
← →
DVM © (2009-09-07 11:32) [34]
> indiegod (07.09.09 01:43) [14]
>
> да, кстати, там на форме еще есть имейджи, этот метод их
> тоже стирает
> и еще есть ошибка List Index is out of bunds
Я же тебе написал, удалять надо не все имиджи, а по критерию какому нибудь. Проще всего в Tag их положить по какому нибудь числу. Те имиджи у которых это число в теге есть удаляем, прочие - нет.
List Index is out of bunds возникает из-за того, что ты не вник в [12] последний абзац.
← →
Плохиш © (2009-09-07 12:01) [35]
> KilkennyCat © (07.09.09 11:21) [33]
>
>
> > Плохиш © (07.09.09 10:35) [32]
> > Научиться кодить за счёт времени обитателей форума.
>
> Разве это плохо?
Я не знаю как расценивают другие бесцельно потраченное время.
← →
KilkennyCat © (2009-09-07 14:34) [36]Тогда объясни, зачем этот раздел форума. И могу за небольшую сумму убедить того, кто заставляет тебя бесцельно тратить время не заставлять это делать.
← →
Anatoly Podgoretsky © (2009-09-07 15:51) [37]Неужели для обучения начинающих?
← →
clickmaker © (2009-09-07 15:55) [38]> Anatoly Podgoretsky © (07.09.09 15:51)
чтобы мастера могли пальцы погнуть. По крайней мере, так считают многие начинающие -)
← →
Плохиш © (2009-09-07 16:04) [39]
> KilkennyCat © (07.09.09 14:34) [36]
>
> Тогда объясни, зачем этот раздел форума.
Самый прикол, что все (недо-)начинающие упорно игнорируют раздел "Начинающим", они ж знают, что модераторам заняться больше нечем, чем переносить вопросы разжёванные в книжках из всех конференций в "Начинающим".
← →
Anatoly Podgoretsky © (2009-09-07 16:09) [40]Так и будет, пока они так считают, но славо богу есть адекватные люди и их большинство.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.11.01;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.007 c