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

Вниз

2 вопроса про Коллекцию.   Найти похожие ветки 

 
DimaBr   (2006-04-17 10:05) [0]

Здравствуйте !
1. Компонент имеет коллекцию, элемент которой ссылается на произвольный компонент
TMyCollectionItem = class(TCollectionItem)
 private
   fSelectedItems: TComponent;
 published
   property SelectedItem: TComponent read fSelectedItems write fSelectedItems;
end;

При выборе в редакторе коллекции очередного итема нужно чтобы фокус перемещался на SelectedItem и в дизайнере отображались свойства выбранного компонента (а не элемента коллекции). Для этого я написал свой редактрор коллекции. Можно ли "видоизменить"  стандартный CollectionEditor чтобы достигнуть того же результата.

2. Имея на форме компонент с такой коллекцией есть ли вероятность того, что компонент (на который ссылается элемент коллекции) окажется записанный в DFM после компонета с коллекцией. То есть:
 object MyComponent: TMyComponent
   CollectionItems = <
     item
       SelectedItem = Database1
     end>
 end
...
object Database1: TDatabase

end

тогда при создании коллекции должна выскочить ошибка. Как с этим можно бороться ?


 
jack128 ©   (2006-04-17 11:08) [1]

DimaBr   (17.04.06 10:05)
тогда при создании коллекции должна выскочить ошибка.


не должна.

 object db: TIBDatabase
   DefaultTransaction = ROTransaction
 end
 object ROTransaction: TIBTransaction
   DefaultDatabase = db
 end


Все нормально работает ;-)  если интересно как именно это разруливается - см исходники Classes.TReader


 
Юрий Зотов ©   (2006-04-17 13:58) [2]

Ошибка выскочит, если компонент, на который ссылается Item, будет удален с формы - получим полнейший Access Violation.

Вместо прямого доступа к полю по записи используйте Set и заставьте компонент (владелец коллекции) получать уведомления от компонентов, на которые ссылаются элементы коллекции (FreeNotification). Получив такое уведомление, компонент шлет его коллекции, та рассылает его всем своим элементам, а они очищают битые ссылки.


 
DimaBr   (2006-04-17 14:12) [3]


> Юрий Зотов ©

Я это понимаю, и реализовал уже. Возникло сомнение по поводу чтения из ресурса ссылки на несуществующий в то время компонент. А что скажете по первому вопросу ?


 
Юрий Зотов ©   (2006-04-17 15:01) [4]

> DimaBr   (17.04.06 14:12) [3]

Нестыковки такого рода разрешаются потоковым механизмом чтения DFM.

object Form1: TForm1
 Menu = MainMenu1
 object MainMenu1: TMainMenu
   object MenuItem1: TMenuItem
     Action = Action1
   end
 end
 object ActionList1: TActionList
   object Action1: TAction
     Caption = "aaa"
     OnExecute = Action1Execute
   end
 end
end

И все прекрасно работает.



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

Текущий архив: 2006.12.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.036 c
15-1164626305
miek
2006-11-27 14:18
2006.12.17
Будут ли OLPC в России?


11-1141244125
appla
2006-03-01 23:15
2006.12.17
Проблема. КОЛ не генерирует корректний .inc файл


2-1164531743
SamProf
2006-11-26 12:02
2006.12.17
Как юзать TMutex в Delhi 2006


15-1163577988
clickmaker
2006-11-15 11:06
2006.12.17
DMClient 3.0 beta 2


3-1160382157
O.O
2006-10-09 12:22
2006.12.17
Формат даты в FireBird