![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обращение к компонентам размещенным на 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]Напиши, как ты делаешь неправильно и что за ошибка.
К телепатам - в другое место.