Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];

Вниз

Удаление компонента   Найти похожие ветки 

 
DimaBr   (2006-05-10 12:56) [0]

Здравствуйте !
Как в компоненте можно предотвратить его удаление с формы ?


 
Джо ©   (2006-05-10 13:08) [1]

Ужас какой. А можно поинтересоваться — зачем?!


 
DimaBr   (2006-05-10 13:37) [2]

Есть панель с несколькими кнопками. Кнопки создаются как "дочерние" компоненты панели, т.е :

...
object Panel: TPanel
  object Button1: TButton
  end
  object Button2: TButton
  end
end
...

Их можно ВЫБРАТЬ в дизайнере (это +) и удалить (это -).


 
Чапаев ©   (2006-05-10 13:43) [3]


> Есть панель с несколькими кнопками. Кнопки создаются как
> "дочерние" компоненты панели

Может, стоит смотреть в сторону фреймов?


 
Джо ©   (2006-05-10 13:46) [4]

> [2] DimaBr   (10.05.06 13:37)
> Есть панель с несколькими кнопками. Кнопки создаются как
> "дочерние" компоненты панели, т.е :
>
> ...
> object Panel: TPanel
>  object Button1: TButton
>  end
>  object Button2: TButton
>  end
> end
> ...
>
> Их можно ВЫБРАТЬ в дизайнере (это +) и удалить (это -).

Почему это "минус"? А если программисту их НУЖНО удалить?


 
DimaBr   (2006-05-10 14:54) [5]


> А если программисту их НУЖНО удалить?

Не нужно. Их количество фиксированно.


 
Яся   (2006-05-11 12:44) [6]

Oтказаться от возможности "ВЫБРАТЬ в дизайнере (это +)"


 
DimaBr   (2006-05-11 13:41) [7]


> Яся

;(((
Тогда есть другой вопрос. Можно ли удалить в дизайнере элемент коллекции, не пользуясь редактором, ну и не вырезая его из DFM-ки.


 
Юрий Зотов ©   (2006-05-11 14:39) [8]

> DimaBr   (11.05.06 13:41) [7]

Никто не мешает сделать редактор компонента и там вытворять все, что угодно. В частности, править свойство-коллекцию.


 
Яся   (2006-05-11 16:55) [9]


> Можно ли удалить в дизайнере элемент коллекции, не пользуясь
> редактором

Стандартным редактором коллекции?
И что все-таки требуется удалять или нет?


 
DimaBr   (2006-05-11 17:16) [10]


> Юрий Зотов ©
править свойство-коллекцию.

Мне не надо править свойство.

> Яся
> И что все-таки требуется удалять или нет?

Нет. Раз не получается предотвратить удаление компонента, я подумал что возможно не удастся удалить элемент коллекции (без редактора)


 
Яся   (2006-05-11 17:47) [11]

Если кнопки создаются как "дочерние" компоненты панели (owner панель), то в дизайнере их нельзя выделить, а значит и удалить. Этот вариант подходит?


 
Юрий Зотов ©   (2006-05-11 20:28) [12]

> DimaBr

[7] можно понять и наоборот.

Если нет редактора коллекции, то как можно удалить ее элемент? Вроде, никак, в IDE других средств нет.

Но вообще, что-то странноватое Вы затеяли. Обычно необходимость в такого рода фокусах (чтобы выделить было можно, а удалить нельзя) возникает при недостаточно продуманном проектировании компонента. Столкнувшись с такой необходимостью, я бы именно с этого пересмотра и начал, если честно.


 
DimaBr   (2006-05-12 09:11) [13]


> Юрий Зотов

Скорее это из-за лени или из-за незнания.
Зачастую требуется внедрить в компонент другой с возможностью редактирования в дизайнере. Для этого (на сколько я понимаю) можно:
а). Написать класс TPersistent повторяющий публикуемые свойства;
б). Внедрить как СУБкомпонент  - (SetSubComponent(true);)
в). Написать собственный редактор.

Первые два варианта - раскрывающийся список. Третий - дополнительне окно. Хотелось бы иметь возможность редактирования компонента (без дополнительного окна и без раскрывающихся списков), то есть например, можно выбрать колонку в гриде нажав на заголовок в дизайнере.
Поскажите как это можно реализовать.


 
georgius ©   (2006-05-18 21:42) [14]

А еще можно использовать наследование форм - контролы предка удалить не получится


 
Наиль ©   (2006-11-03 13:43) [15]

> Если нет редактора коллекции, то как можно удалить ее элемент?
> Вроде, никак, в IDE других средств нет.

Есть, Object TreeView имееющийся в D7, очень хорошо заточен для управления коллекциями и Action"ами.
Поэтому подмена редактора для коллекции (для данной задачи) - не выход (если не написать собственное отображение класса в Object TreeView).

> то есть например, можно выбрать колонку в гриде нажав на
> заголовок в дизайнере

Такое в принципе осуществить можно. Но сложнее, чем управляемый грид в отдельном окне. Для начало нужно учесть, что от клавиши DEL спасенья нет.
Пусть грид - родитель, а колонка - дитя. Тогда ребёнок при удалении должен оповещать родителя о собственом удалении. Задача родителя, запомнить информацию о ребёнке и сделать такого же. Далее, родитель убирает информацию о ребёнке из списка и помещает на её место информацию о новом ребёнке. Для реального удаления должен использоваться специальный метод ребёнка, который вызывает Destroy без оповещения родителя.
В момент удаления ребёнка прорисовка родителя должна быть "приостановлена". Например, если этого не сделать, то столбцы грида схлопнутся и расхлопнуться, на глазах у пользователя, а намёка на удаление и быть не должно. Естествено, после такого фокуса, ссылки на столбцы станут битыми. Казалось бы, ничего страшного в этом нет, т.к. вряд ли будет использоваться компонент ссылающийся на столбцы в DesignTime. В RunTime такое возможно, но никто не станет удалять не удаляемые столбцы. Для грида это так, но в общем случае, нужно защититься от существования битых ссылок.


 
DimaBr   (2006-11-03 15:00) [16]


> Для начало нужно учесть, что от клавиши DEL спасенья нет

Хорошо написано, однако в DevExpress это всё таки реализовано, правда я так и не понял каким образом, но уж точно не подменой удалённой колонки новою.


 
Юрий Зотов ©   (2006-11-03 16:27) [17]

> от клавиши DEL спасенья нет

Например: разве что-то мешает поставить системный хук?
:о)



Страницы: 1 вся ветка

Форум: "Компоненты";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.132 c
15-1191262340
cber
2007-10-01 22:12
2007.11.04
В чём ошибка?


8-1168798135
default_user
2007-01-14 21:08
2007.11.04
Как OGG перегнать в MP3 или хотя бы в WAV?


15-1191197823
Andy BitOff
2007-10-01 04:17
2007.11.04
Реально поймать изменить/дополнить...


2-1192168137
r.o.o.t
2007-10-12 09:48
2007.11.04
Обработка ошибок в потоке


15-1190696752
арпывапр
2007-09-25 09:05
2007.11.04
блокировка alt+ctrl+del или что делать с USB





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский