C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: передача данных между формами  (Прочитано 2005 раз)
leoboec
Участник


Сказали спасибо: +1/-2
Offline

Сообщений: 189

За красоту! ;)


передача данных между формами
« : 21 Апрель 2014, 12:53:58 »

собственно отрывок из предыдущей темы
"Еще один интересный для меня вопрос созрел....
Запускаю я приложение по умолчанию открывается эксель фоном считывая оттуда данные и заполняя соответствующие комбобоксы эдиты и т.д.
Далее допустим есть еще одна форма на которой я вывожу данные из комбобоксов и пытаюсь заменить новыми данными.. то есть допустим
 в экселе есть строка а1 ей соответствует значение 5
все это успешно подгрузилось и в 1 и во 2 форму
далее во второй форме я выбираю а1 у меня в эжите появляется 5 я это 5 меняю допустим на 10 и нажимаю кнопку в которой написано сохранить файл с тем же именем без запроса замены.. и вроде бы локально у меня после изменения значения считает по новому и выводит новые значения. Но когда я нажимаю файл закрыть на основной форме там просто закрывается сам эксель, то при запуске программы снова я вижу в файле старые данные... подскажите что делаю не так"

и еще одно уточнение. допустим у меня на форме 1 есть компонент эдит. я в него ввожу и есть кнопка Button1  когда я на нее нажимаю открывается еще одна форма.. в этой форме я хочу вывести в Label то что было введено на 1 форме в эдит... вот ка кэто сделать не могу понять... точнее прописываю но не выводятсья данные... то же самое думаю связано и с ворпосом выше про работу с одним эксель файлом на разных формах
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


Re: передача данных между формами
« Ответ #1 : 22 Апрель 2014, 08:24:25 »

Вопросы у тебя "зреют" просто как апельсины в Египте! 
Напиши нормально - что надо, дай схемы, скриншоты... Из твоего текста я, например, вообще ничего не понял.
Записан
leoboec
Участник


Сказали спасибо: +1/-2
Offline

Сообщений: 189

За красоту! ;)


Re: передача данных между формами
« Ответ #2 : 22 Апрель 2014, 08:43:43 »

ну так как 1 и 2 вопрос здесь примерно об одинаковом я думаю.. оппробую по накратчайшему пути пойти
начнем со второго вопроса.

на первой форме есть  Edit 2 событие Onchange прописано примерно так

Код
a=Edit2->Text;

теперь я хочу вывести эту а на Form3 в label
Unit1.h  на 3 форме подключен также как и Unit3.h на 1
прописываю следующее на 3 форме
Код
label1->Caption= Form1->Edit2->text

то есть формально вывожу ту же переменную а.
Как итог поле label пустое на 3 форме...
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


Re: передача данных между формами
« Ответ #3 : 22 Апрель 2014, 09:33:18 »

Присоедини проект.
Записан
leoboec
Участник


Сказали спасибо: +1/-2
Offline

Сообщений: 189

За красоту! ;)


Re: передача данных между формами
« Ответ #4 : 22 Апрель 2014, 12:06:22 »

Надеюсь правильно сделал
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


Re: передача данных между формами
« Ответ #5 : 22 Апрель 2014, 15:43:46 »

Так что ж ты хочешь? У тебя же текст берется из едитов 1-й формы в момент создания 3-й формы, т.е. однократно!
Код
void __fastcall TForm3::FormCreate(TObject *Sender)
{
  Label14->Caption=Form1->Edit2->Text;
}
 

Событие OnCreate срабатывает после создания формы Form3. У тебя формы создаются последовательно: 1-ая, 2-ая, 3-я:
Код
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm2), &Form2);
Application->CreateForm(__classid(TForm3), &Form3); // тут!
 

Значит, Label14 обновляется всего один раз - когда создалась форма №3. Чтобы динамически обновлять Label14 на форме 3 при изменении Edit2 на форме 1, тебе надо прописать в OnChange этого едита:
Код
Form3->Label14->Caption = Edit2->Text;
 

А переменная a здесь никакой роли не играет.

PS. Общее замечание к проекту: проект плохо организован. Везде глобальные переменные, нет классовых методов + перегруженность визуальными компонентами. Как вариант, лучше создавать контролы динамически.
Записан
leoboec
Участник


Сказали спасибо: +1/-2
Offline

Сообщений: 189

За красоту! ;)


Re: передача данных между формами
« Ответ #6 : 22 Апрель 2014, 17:00:48 »

блин точно!!!! как не додумался то.... спасибо большое!!!!! по проекту да я примерно ждал таких замечаний и про глобальные переменные знаю...... но с классами пока вообще не знаю как работать наверное не дорос до этого..... но хочу написать эту программу получше!!! поэтмоу придется и этмоу учиться... про насыщенность визуальную тоже думал.... про динамические контрол не понял.....  подскажите пожалуйста?! Да и про "классовую организованность" наверное попрошу подсказок... для начала хотя бы наверное на литературу/
И по экселю если честно так и не понял... на второй форме по нажатию кнопки применить... я меняю значение в строке эксель... потом перехожу на первую форму он считает с новым значением но если нажимаю файл закрыть то после перезапуска опять старое значение хотя вроде сохранение файла после изменения значения делаю
« Последнее редактирование: 23 Апрель 2014, 08:48:35 от leoboec » Записан
leoboec
Участник


Сказали спасибо: +1/-2
Offline

Сообщений: 189

За красоту! ;)


« Ответ #7 : 24 Апрель 2014, 08:54:00 »

ПОдскажите )) а то дальше хочу идти еще вопросы зреют ))))))))))))))))))))))
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.105 секунд. Запросов: 19.