Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обращение к компонентам размещенным на MDI [D7]


Ярослав ©   (2006-05-05 15:56:00) 

Пытаюсь на StatusBar размещенный на MDI  передать сообщение из
модуля   данных   выскакивает ошибка ..
Кто знает как правильно обращаться к компонентам  размещенным на  MDI  ???


Ярослав   (2006-05-06 09:58:00) [1]

Правда
formss: tform11;
нужно убрать остатки из прошлой функции


Ярослав   (2006-05-06 09:56:00) [2]

Спасибо  я уже разобрался косяк был прост.. нужно было обращаться к активной mdi
uses   DB_BASE,zaprpol,main;

   procedure TSelect_DM.calctokur;
var
s,d:string ;
skurs,ekurs,stoims,stoime,stgrn: extended ;
   formss:tform11 ;

begin
  try
  begin

         inifw1.IniFileName:='.ini';
         skurs:=inifw1.readfloat('akurs','aaS');
         ekurs:=inifw1.readfloat('akurs','ae');
        s:='Стоимость на дату оценки ' ;
        d:=' грн' ;

        if tform11(main_form.ActiveMDIChild).N8.Checked=true  then
        begin
  stoims:=select_pFIBDataSet.FieldValues['st_s'] ;
         stgrn:=stoims*skurs ;
        end ;
        if  tform11(main_form.ActiveMDIChild).N10.Checked=true  then
        begin
  stoime:=select_pFIBDataSet.FieldValues['st_e'];
         stgrn:=stoime*ekurs ;
        end ;

tform11(main_form.ActiveMDIChild).StatusBar1.Panels[1].Text:=s+formatfloat('###.###',stgrn)+d ;

  end
  except
  messagedlg('Ошибка расчета стоимости ',mterror,[mbok],0);
   select_pFIBDataSet.Cancel;
  end ;
end;


ЮЮ   (2006-05-06 03:39:00) [3]

formss тоже перенеси в параметры. Надеюсь, когда вызываешь calctokurs знаешь на какую MDI форму её выводить. Или постарайся вызывать её из методов MDI формы, тогда  formss  == Self. А ещё лучше сделать эту функциональность методом Tform11


Loginov Dmitry   (2006-05-05 18:26:00) [4]

Зачем сиё действие, если не секрет?


> var
..........
> formss: Tform11 ;


Плохиш   (2006-05-05 16:28:00) [5]


> Ярослав   (05.05.06 16:22) [5]
> на не MDI это работало

Это была галюцинация или функция была написана по другому.


Плохиш   (2006-05-05 16:27:00) [6]


> formss.StatusBar1.Panels[1].Text:=s+formatfloat('###.###',
> stgrn)+d) ;

Ой, я даже знаю текст ошибки :-)
TForm11(Application.MainForm).StatusBar1.Panels[1].Text:=s+formatfloat('###.###',stgrn)+d) ;


Ярослав   (2006-05-05 16:22:00) [7]

вешаю ее на обработчик  DataSourceDataChange
на не MDI это работало


Ярослав   (2006-05-05 16:21:00) [8]

formss MDI форма


Ярослав   (2006-05-05 16:20:00) [9]

function calctokurs(inif:TInifW;datset:tpFIBDataSet):boolean ;
var
s,d:string ;
skurs,ekurs,stoims,stoime,stgrn: extended ;
 
formss: Tform11 ;

begin
  try
  begin
         inif.IniFileName:='.ini';
         skurs:=inif.readfloat('akurs','aaS');
         ekurs:=inif.readfloat('akurs','ae');
        s:='Ñòîèìîñòü íà äàòó îöåíêè ' ;
        d:=' ãðí' ;

        if stat='dol'  then
        begin
  stoims:=datset.FieldValues['st_s'] ;
         stgrn:=stoims*skurs ;
        end ;
        if stat='evr' then
        begin
  stoime:=datset.FieldValues['st_e'];
         stgrn:=stoime*ekurs ;
        end ;

formss.StatusBar1.Panels[1].Text:=s+formatfloat('###.###',stgrn)+d) ;

  end
  except
  messagedlg('Îøèáêà ðàñ÷åòà ñòîèìîñòè ',mterror,[mbok],0);
   datset.Cancel;
  end ;
end;


Плохиш   (2006-05-05 16:17:00) [10]


> Кто знает как правильно обращаться к компонентам  размещенным
> на  MDI  ???

Так же как и к компонентам не на МДИ. Но лучше исползовать механизм событий, создай обработчик события в модуле данных. Если речь идёт о MDI-Child, то создай в модуле данных механизм обработки списка форм, требующих обовления и пусть каждая форма, если ей надо, добавляет себя туда при создании и удаляет при разрушении.

> Jeer ©   (05.05.06 16:06) [1]
> К телепатам -  в другое место.

Как? Уже сослали? 8-O


Jeer   (2006-05-05 16:06:00) [11]

Напиши, как ты делаешь неправильно и что за ошибка.
К телепатам -  в другое место.


Наверх

Титульная страница Поиск, карта сайта Написать письмо