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

Вниз

связь компонентов в DisignTime   Найти похожие ветки 

 
jk ©   (2005-10-29 06:44) [0]

как  организовать связь двух пользовательских компонентов: например компонент_A и компонент_B.
 То есть после созданиия этих компонентов должен быть достигнут  следующий эффект:
 Размещаем на форме несколько экземпляров компонент_A и несколько  экземпляров компонент_B.
 В свойствах компонента_A (в инспеторе объектов) должно присутствовать свойство-выпадающий список  доступных(размещённых на форме на этапе проектирования) компонентов_B.
 И наоборот,
 в свойствах компонента_B должно присутствовать свойство-выпадающий  список доступных(размещённых на форме на этапе проектирования)  компонентов_A.
 При удалении или добавлении компонентов эти списки должны
 автоматически корректироваться.


 
Юрий Зотов ©   (2005-10-29 16:57) [1]


type
 TB = class;

 TA = class(...)
 private
   FB: TB;
   procedure SetB(const Value: TB);
 protected
   procedure Notification(AComponent: TComponent; Operation: TOperation); override;
 published
   property B: TB read FB write SetB;
 end;

 TB = class(...)
 private
   FA: TA;
   procedure SetA(const Value: TA);
 protected
   procedure Notification(AComponent: TComponent; Operation: TOperation); override;
 published
   property A: TA read FA write SetA;
 end;

procedure TA.Notification(AComponent: TComponent; Operation: TOperation);
begin
 inherited;
 if (Operation = opRemove) and (AComponent = FB) then
   FB := nil
end;

procedure TA.SetB(const Value: TB);
begin
 if FB <> Value then
 begin
   if FB <> nil then
     RemoveFreeNotification(FB);
   FB := Value;
   if FB <> nil then
     FreeNotification(FB)
 end
end;

procedure TB.Notification(AComponent: TComponent; Operation: TOperation);
begin
 inherited;
 if (Operation = opRemove) and (AComponent = FA) then
   FA := nil
end;

procedure TB.SetA(const Value: TA);
begin
 if FA <> Value then
 begin
   if FA <> nil then
     RemoveFreeNotification(FA);
   FA := Value;
   if FA <> nil then
     FreeNotification(FA)
 end
end;



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

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

Наверх




Память: 0.47 MB
Время: 0.025 c
15-1144484300
(AD)acid
2006-04-08 12:18
2006.04.30
Смерш 2 Василия Голвачева


15-1144528698
Pat
2006-04-09 00:38
2006.04.30
Написание игры


1-1143018225
Andrey.Ru
2006-03-22 12:03
2006.04.30
Продолжительность m2v файла??????


1-1142956952
Volf_555
2006-03-21 19:02
2006.04.30
Как определить handle компонента, который находится на панели?!!!


2-1144849467
que
2006-04-12 17:44
2006.04.30
GetMem&amp;Buffer of data