C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Нужна помощь новичку., Насчёт созданных мною классов.
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-у моих классов, а не к уже изменнёным переменным и главная форма считает их значения нулями, хотя я их менял на положительные.
Как сделать, чтоб главная форма обращалась к уже изменнёным мною переменным.

User Attached Image Скачать файл
Рыбалка.zip


Test3R
Отправлено: 27.01.2007, 21:16


Дежурный стрелочник

Группа: Участник
Сообщений: 46



Сорь, вот тут нужный проект.

User Attached Image Скачать файл
Рыбалка.zip


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
Для тя прикрепил рабочий проект. А вообще она нужна для одной онлайн-игры для расчёта в профе рыбака. smile.gif

User Attached Image Скачать файл
Рыбалка.zip


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.cpp
CODE
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



Буду знать. Кста, в третей проге у мну проверка стоит и работает, говорит, когда непрально введено.

Вернуться в Вопросы программирования в C++Builder