Форум: "Компоненты";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];
Внизсвязь компонентов в 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c