Вниз
Скачать: CL | DM;

Как сделать обращение к MdiChild –форме из другой MdiChild-формы?   Найти похожие ветки 

← →
Крутыш ©   (2003-12-24 22:17) [0]

Пусть например две MdiChild-формы открыты в данный момент.
Dform2, Gform3.
В MDIChild-форме Dform2 есть такой код: Gform3.caption:=’Здрасьте’;
Щелчком на кнопке вызываешь его и выходит ошибка:
Access violation at address 000545 in module project1 ……..
1.Как обратиться к другой форме именно той которая нужна???
2.И если например у тебя несколько форм класса Gform3. Как отбратиться именно к той форме откуда ты вызвал другую форму для выбора продуктов питания. И вернуть результат именно той форме расходной накладной откуда была вызван справочник
продуктов питания (как в 1С). Даже если у тебя в одно время открыто несколько накладных???


← →
Talla2k ©   (2003-12-24 22:58) [1]

Вот разбирайся:

(application.mainform.MDIChildren[0] as TForm2).Label1.Caption:=
floattostrf(strtofloat((application.mainform.MDIChildren[0] as TForm2).label1.caption)-
strtofloat(sum)+(strtofloat(new_sto)*strtofloat(new_kol)),fffixed,5,2);
old_sk:=floattostrf((strtofloat(sto)*strtofloat(kol))-strtofloat(sum),fffixed,5,2);


← →
ЮЮ ©   (2003-12-25 04:14) [2]

>Как отбратиться именно к той форме откуда ты вызвал другую форму для выбора продуктов питания. И вернуть результат именно той форме расходной накладной откуда была вызван справочник

Очевидно, в конструкторе справочника надо указывать форму, его вызвавшую.


← →
ЮЮ ©   (2003-12-25 04:17) [3]

Р.s. и не испльзовать конструкции типа Gform3.ххх. А глобальную переменную Gform3 в модуле формы вообще "убить" как источник возможных AV.


← →
Крутыш ©   (2003-12-25 08:41) [4]

ЮЮ[2]!!! То есть как указать. Не допонял.


← →
Кщд   (2003-12-25 08:59) [5]

передать конструктору указатель на форму-родитель


← →
Silver Alex ©   (2003-12-25 09:39) [6]


> Как отбратиться именно к той форме откуда ты вызвал другую
> форму для выбора продуктов питания. И вернуть результат
> именно той форме расходной накладной откуда была вызван
> справочник


Dform2, Gform3.

можно передавать вызываемой форме Handle нужной тебе формы, а потом отсылать сообщение этой форме.
например, во всех формах заводишь переменную fHandle.Затем из Gform3 ты вызываешь Dform2 приблизительно так

with TDform2 .Create(application) do
begin
fHandle:=self.Handle;
Show;//если форма MdiChild, то Show не надо
end;

ну и после отсылаешь что тебе надо из Dform2
SendMessage(fHandle,WM_MAIN_MESSAGE,1,Integer(Edit.Text));

а в Gform3 соотвественно обрабатываешь сообщение

procedure TGform3.MAIN_MESSAGE(var M: TMessage);
begin
case m.WParam of
1: self.Caption:=string(m.LParam);
2: ...
3: ...
end;
end;
end;


← →
Крутыш ©   (2003-12-25 23:07) [7]

Благоарю всех!!!
Спасибо!!!



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.017 c
1-37620
BD
2003-12-28 10:40
2004.01.13
Аналог CriticalSection для кроссплатформенных приложений?


4-37984
DillerXX
2003-11-07 18:44
2004.01.13
Окна


3-37581
Vanoshka
2003-12-17 11:24
2004.01.13
Транзакции в InterBase


3-37554
Simply Alex
2003-12-11 01:09
2004.01.13
BLOB фильтры


1-37784
Сергей Резников
2003-12-29 13:19
2004.01.13
Скрыть попап-меню




   Наверх