Форум: "Основная";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];
ВнизКак сделать обращение к 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 вся ветка
Форум: "Основная";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c