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

Вниз

Общие соображения о межкомпонентной привязке изменений свойств   Найти похожие ветки 

 
Юрий Зотов (M)   (2002-02-15 11:46) [4]

Если я правильно понял задачу, то сделал бы примерно так.

Пишем общий юнит, в котором создаем список рассылки:

interface

var
NotifyList: TList;

implementation

initialization

NotifyList := TList.Create;

finalization

NotifyList.Free

end.

В этом же юните пишем общий предок для всех Ваших TGraphicControl"ов.

constructor TMyGraphicControl.Create(...);
begin
inherited;
NotifyList.Add(Self)
end;

destructor TMyGraphicControl.Destroy;
begin
NotifyList.Remove(Self);
inherited
end;

procedure TMyGraphicControl.NotifyAll(сделанное_изменение);
var
i: integer;
begin
for i := 0 to NotifyList.Count - 1 do
if NotifyList[i] <> Self then
TMyGraphicControl(NotifyList[i]).ListNotification(Self, сделанное_изменение)
end;

procedure TMyGraphicControl.ListNotification(Sender: TMyGraphicControl; AChange: Tсделанное_изменение));
begin
// Здесь выполняем нужный анализ и делаем все остальное.
end;

Вот и все. Теперь, чтобы уведомить других о своем изменении, любой Ваш контрол просто вызывает метод NotifyAll из любого места своего кода и передает ему <сделанное_изменение>.

Если же общий предок Вас не устраивает, то всю ту же самую функциональность надо реализовать в отдельном объекте, экземпляр которого создается в каждом Вашем контроле и вся работа идет через него.



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

Форум: "Основная";
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.004 c
3-9067
irq
2002-02-06 13:05
2002.03.04
Множественные изменения


4-9324
saviola
2002-01-04 10:26
2002.03.04
Помогите найти функцию ...


3-9069
kserg@ukr.net
2002-02-06 12:50
2002.03.04
Как узнать дату последнего обновления файла-таблицы?


7-9313
Hruks
2001-11-30 11:52
2002.03.04
LPT, COM и Рэлюшки...


4-9343
shur
2001-12-17 22:14
2002.03.04
Как убрать стандартные системные часы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский