![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как удалить выделенный контрол? [D7, WinXP]
Мурзик © (2007-12-07 15:01:00)На форме определенные контролы (кнопки, метки и т.п.), как программно удалить выделенный контрол?
homm (2007-12-07 21:33:00) [1]> [16] Галинка © (07.12.07 15:44)
> Обычно, когда контрол получает фокус ввода, то он становится
> выделенным.
Обычно, когда контрол получает фокус ввода, он получает фокус ввода. Выделеный контрол, по редоставленному описанию, это сферический конь в вакууме.
homm (2007-12-07 21:31:00) [2]> [9] Мурзик (07.12.07 15:11)
> Я же говорю, я не знаю контретного контрола, может быть
> выделана метка, а может кнопка, может вобще...
Как выделена? Что значит выделена? Кто ее выделил?
Сергей М. (2007-12-07 16:54:00) [3]
> Небольшой листинг можно?
А не жирно будет ? Может логикой обойдешься ?)
У дельфийских контролов есть событие OnExit, происходящее при потере контролом фокуса.
В его обработчике ты волен и можешь зафиксировать где-либо ссылку на контрол, теряющий фокус.
Жмакая мышью на некую Кнопку ты проверяешь в ее клик-обработчике, не является ли эта ссылка ссылкой на эту Кнопку или ссылкой на форму, на которой лежит Кнопка. Если не является - смело делай по этой ссылке Фри.
Галинка (2007-12-07 16:19:00) [4]Jeer © (07.12.07 16:09) [20]
нет. Не будет AV когда попытается найти несуществующий элемент.
Jeer (2007-12-07 16:09:00) [5]
> Галинка © (07.12.07 15:59) [19]
> в моем цикле лучше идти от конца к началу.
Неужели быстрее найдет ?
Галинка (2007-12-07 15:59:00) [6]Dib@zol © (07.12.07 15:52) [18]
а разве в МСДН описаны классы VCL? ))) Не знала.
Автор, в моем цикле лучше идти от конца к началу. Т.е. i:= Form1.Controls.Count - 1 downto 0
Dib@zol (2007-12-07 15:52:00) [7]> ПыСы: бывает ли онлайн помощь по дельфи. Типа МСДН?
А чем не устроил МСДН? :) Тем более - ДМ вот и есть онлайн помощь :)))
Галинка (2007-12-07 15:52:00) [8]
for i:=0 to Form1.Controls.Count do
if Form1.Controls[i].Tag = 1 then Form1.Controls[i].Free();
типа такого.
Галинка (2007-12-07 15:44:00) [9]Если у класса нет свойства типа IsSelected, выделенность можно, например, в Tag пометстить.
Обычно, когда контрол получает фокус ввода, то он становится выделенным. И остается таковым пока любой другой контрол (исключая контролы с функциями "системного меню", типа "OK", "Ignor", "Accept" etc) не получил фокус ввода. Т.е. не стал выделенным.
Потом в цикле можно перебрать все контролы на форме и с помощью проверки на тип и выделенность уничтожить те, для которых обе проверки дают истину.
ПыСы: бывает ли онлайн помощь по дельфи. Типа МСДН?
Мурзик (2007-12-07 15:32:00) [10]Дак а вот как это реализовать? Небольшой листинг можно?
Palladin (2007-12-07 15:32:00) [11]а что такое выделеный контрол? чем ты его выделил? маркером на экране?
Галинка (2007-12-07 15:31:00) [12]если удаляться будут контролы определенного класса, то нужно бы проверку на принадлежность классу сделать. И вероятно на выделенность.
Мурзик (2007-12-07 15:31:00) [13]Удалено модератором
Мурзик (2007-12-07 15:14:00) [14]
> Ту которую ты жмакаешь для удаления контрола
Нет, ее не учитывать!
Сергей М. (2007-12-07 15:13:00) [15]
> а может кнопка
Ту которую ты жмакаешь для удаления контрола - она в том же числе ? Это же тоже контрол ..
Мурзик (2007-12-07 15:11:00) [16]
> ЧСделай так, чтобы Control ссылался на нужный контрол, а
> не на форму.
Я же говорю, я не знаю контретного контрола, может быть выделана метка, а может кнопка, может вобще... и как ссылался на нужный контрол!
Сергей М. (2007-12-07 15:07:00) [17]
> Мурзик (07.12.07 15:05) [4]
Значит Control есть ссылка на форму.
ЧСделай так, чтобы Control ссылался на нужный контрол, а не на форму.
{RASkov} (2007-12-07 15:07:00) [18]> [3] Мурзик (07.12.07 15:03)
> как, выделив произвольный компонент
Вот именно как? как выделяешь? например как выделишь TImage?
> удалить его по нажатию кнопки
Какой кнопки? ...мышки? ...на клавиатуре? ...Button1?
Мурзик (2007-12-07 15:06:00) [19]У меня на дочерней форме
Anatoly Podgoretsky (2007-12-07 15:05:00) [20]> Мурзик (07.12.2007 15:05:04) [4]
С чего бы