Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.04;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.016 c
11-1175322891
Trible
2007-03-31 10:34
2007.11.04
Содержимое RichEdit


2-1192101763
xayam
2007-10-11 15:22
2007.11.04
Как добавить символ перед


5-1147251414
DimaBr
2006-05-10 12:56
2007.11.04
Удаление компонента


15-1190875512
YuriKoltsov
2007-09-27 10:45
2007.11.04
LOG файлы в Microsoft SQL Server


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