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

Вниз

Разная процедура для каждой формы.. как?   Найти похожие ветки 

 
ply ©   (2009-02-05 04:56) [0]

В датамодуле лежит компонент который принимает данные с COM-порта.
Нужно чтобы для каждой формы процедура обработки получаемых данных была своя (со своим кодом и с возможным использованием контролов этой формы).
Как это реализовать? Или придется на каждую форму кидать по такому компоненту?


 
Медвежонок Пятачок ©   (2009-02-05 09:05) [1]

Или придется на каждую форму кидать по такому компоненту?

типа кто первым открыл порт, - того и тапки?


 
clickmaker ©   (2009-02-05 10:36) [2]

> Как это реализовать?

реализовать событие типа OnDataReceived и список подписчиков (форм в данном случае) на него


 
ЮЮ ©   (2009-02-05 11:34) [3]

Насколько понял я, человек хочет иметь форму с одинаковым набором контролов и компонентов на ней, но с разным кодом реализации.

Ибо приложение хочет многооконное. А плодить одинаковае по виду TForm1, ..., TFormN не хочет.


 
ply ©   (2009-02-05 14:14) [4]

Формы и контролы на них абсолютно разные. Общего только то что когда форма активна, то процедура по обработке данных должна выполняться та которая написана в ее pas-файле.
Пробовал в датамодуле ввести переменную proc:TProcedure, добавить вызов этой процедуры в событие компонента по приему данных, а в OnActivate для каждой формы писать proc:=ThisForm.DataRecieved
Но в результате использовать контролы можно,но свойства их при изменении не изменяются.

>реализовать событие типа OnDataReceived и список подписчиков (форм в данном случае) на него

можно поподробнее? про список подписчиков.


 
ply ©   (2009-02-05 14:21) [5]

щас подумал: может как-то отсылать сообщение активному окну программы с полученными данными, а там реализовывать обработку? только как это сделать пока незнаю=)


 
clickmaker ©   (2009-02-05 14:56) [6]

> про список подписчиков

TSubscriber = class
 Object: TObject;
 EventProc: TNotifyEvent;
public
 constructor Create(AObject: TObject; AEventProc: TNotifyEvent);
end;

TComDataModule = class
private
 FEventSubscribers: TObjectList;
...

procedure TComDataModule.SubscribeEvent(ASubscriber: TObject; AEventProc: TNotifyEvent);
begin
 Subscr := TSubscriber.Create(ASubscriber, AEventProc);
 FEventSubscribers.Add(Subscr);
end;

procedure TComDataModule.NotifySubscribersWhenSomeDataReceivedFromCOMPort;
begin
 for i := 0 to FEventSubscribers.Count-1 do
   TSubscriber(FEventSubscribers[i]).EventProc(Self);
end;

// форма при создании может подписаться на событие

TForm1.Create
...
 DataModule.SubscribeEvent(Self, FormEventHandler);


вместо TNotifyEvent, наверно, надо будет написать свой тип события, чтобы передавать собственно данные (если они не доступны через публичные свойства датамодуля)
ну и процедуру отписки сделать в FormDestroy



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

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

Наверх





Память: 0.46 MB
Время: 0.006 c
4-1227216337
demon
2008-11-21 00:25
2010.01.24
Количество Items на помещаеться


2-1260087982
Washington
2009-12-06 11:26
2010.01.24
AlphaControls, кастомизация скинов


15-1258643718
Jeer
2009-11-19 18:15
2010.01.24
В порядке обсуждения TDBTreeView.


15-1258876536
Гость
2009-11-22 10:55
2010.01.24
Проблема в C# (помогите найти ошибку)


2-1259791180
kolj
2009-12-03 00:59
2010.01.24
Проблемы с ClientDataSet





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