Test3R |
Отправлено: 27.01.2007, 21:14 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 46
|
Есть проект.
В главной форме есть Button, который считает значение переменной ResultCalculation (ResultCalculation = FishCalculation — BaitCalculation — RodCalculation;). Последние три переменные состоят других моих переменных, значения которых можно указать формах (Rod.NutRod = StrToInt(NutRodEdit->Text); и т.п. Проблема в том, что к каждому классу из трёх (TFish, TBait, TRod) обращается по две формы, главная и форма, в которой указываются параметры переменных.
Проблема — изменяю переменные (Rod.NutRod = StrToInt(NutRodEdit->Text и т.п.), из которых получаются три главные переменные (FishCalculation, BaitCalculation, RodCalculation), но главная форма не видит изменений переменных FishCalculation, BaitCalculation, RodCalculation, т.к. (я так думаю) обращается к Unit-у моих классов, а не к уже изменнёным переменным и главная форма считает их значения нулями, хотя я их менял на положительные.
Как сделать, чтоб главная форма обращалась к уже изменнёным мною переменным.
|
|
Test3R |
Отправлено: 27.01.2007, 21:16 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 46
|
Сорь, вот тут нужный проект.
|
|
aquanet sk |
Отправлено: 27.01.2007, 21:29 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 87
|
А можно попросить прислать потом готовый проект на e-mail? Не знаю для чего прога, но пригодится, судя по названию =)
Отредактировано aquanet sk — 27.01.2007, 21:29 |
|
Test3R |
Отправлено: 28.01.2007, 13:08 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 46
|
Пришлось решить проблему через ShowModal(), хотя хотелось без Modal обойтись. Ну да ладно, главное всё работает, как надо.
2aquanet sk
Для тя прикрепил рабочий проект. А вообще она нужна для одной онлайн-игры для расчёта в профе рыбака.
|
|
beginner |
Отправлено: 28.01.2007, 14:21 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 44
|
QUOTE (Test3R @ 28.01.2007, 13:08) | Пришлось решить проблему через ShowModal(), хотя хотелось без Modal обойтись. Ну да ладно, главное всё работает, как надо. |
Не совсем ясно, что решило ShowModal. Проблема в том,
что ты меняешь значение переменной определенной в дочерной форме, а сумму расчитываешь используя переменных определенных в основной формы.
В дочерных формах нужно определить не переменную, а указатель
на соотв. переменную главной формы.
Например для переменной Fish,
1. в FishUnit.h нужно изменить тип переменной TFish Fish; на TFish *Fish;
2. в FishUnit.cpp в TForm2::OkButtonClick точки всюду заменить на ->
3. и в FishingUnit.cppCODE | void __fastcall TForm1::N2Click(TObject *Sender)
{
Form2->Fish = &Fish;
Form2->Show();
} |
и так для остальных переменных.
P.S. я смотрел вторую версию. В третьей ты решил проблему не с помощью
ShowModal, а с тем, что убрал определение переменных из дочерных форм и
код из дочерных форм перенес в главную форму. imho не лучший способ решения проблемы, так как напр. перед закрытием формы желательно
проверить правильность введенных данных. Но если данные обрабатываются в
другой форме, тогда это сделать не можно.
Отредактировано beginner — 28.01.2007, 14:35 |
|
Test3R |
Отправлено: 28.01.2007, 15:40 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 46
|
Буду знать. Кста, в третей проге у мну проверка стоит и работает, говорит, когда непрально введено. |
|
|