Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
7 / 7 / 1
Регистрация: 24.09.2018
Сообщений: 61
Builder 6

Введение данных в два компонента Edit с другой формы

21.11.2018, 19:11. Показов 1797. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Прошу помочь по одному вопросу. На одной Form 1 разместил два компонента Edit. На Form 2 разместил компонент Button. Ввожу данные в первую форму из второй получается, но данные вводятся одновременно. Как сделать поочередность внесение данных. Предоставляю код:

C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm2::Button1Click(TObject *Sender)
{
 float f;
if ( f == 1)
{Form1->Edit2->Text = "1";}
 
else
 
Form1->Edit2->Text = Form1->Edit2->Text  + "1";
 
 Form1->Edit1->Text = Form1->Edit1->Text  + "1";}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.11.2018, 19:11
Ответы с готовыми решениями:

Управление размерами компонента формы с другой формы
Доброго дня. Подскажите, есть код, поставлен в событие TForm1::FormResize if(Form11 != NULL) { ...

Вызов компонента c другой формы
Всем доброго времени суток, возможно не правильно назвал тему, суть такая, есть основная форма и её Unit1.cpp и .h, я создал второй файл...

Очистить содержимое компонента первой формы при открытии другой
Здравствуйте. Вроде бы банальный вопрос, но что-то у меня не получается очистить содержимое Listbox1 и memo1 (они находятся на первой...

11
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
22.11.2018, 00:07
kazak-74,
ну так в условии после
C++
1
else
выполняется
C++
1
 Form1->Edit2->Text = Form1->Edit2->Text  + "1";
ну а последняя строка
C++
1
 Form1->Edit1->Text = Form1->Edit1->Text  + "1";
выполняется всегда.
возможно надо добавить условие и для второго едита?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm2::Button1Click(TObject *Sender)
{
 float f,h;
if ( f == 1)
Form1->Edit2->Text = "1"; 
else 
Form1->Edit2->Text +=  "1";
 
if ( h== 1)
Form1->Edit1->Text = "1"; 
else  
 Form1->Edit1->Text +=  "1";
}
совсем непонятно зачем такое решение?

да и откуда берутся данные в f?
ведь f инициализируется по нажатию кнопки с произвольным значением.
0
7 / 7 / 1
Регистрация: 24.09.2018
Сообщений: 61
22.11.2018, 18:49  [ТС]
Добовлял не получается. Согласен воспроизводил данную переменную получается работает. Пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
{
 float f;
  f=StrToFloat(Form1->Edit5->Text);
if ( f == 1)
{Form1->Edit2->Text = "22222";}
 
else
Form1->Edit2->Text = Form1->Edit2->Text  + "1";
 
 Form1->Edit1->Text = Form1->Edit1->Text  + "1";
 
       }
А этот пример не получается. Через фокус пробывал пока результата нет.

Добавлено через 1 минуту
Решение простое. Кликнул на Edit 1 ввел туда данные, кликнул на Edit 2 ввел туда данные. Это все одной кнопкой Button1.

Добавлено через 35 минут
Указанный Вами код не работает. Работает в таком виде, но опять ввод цифр происходит одновременно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm2::Button1Click(TObject *Sender)
{
 
float f,h;
if ( f == 1)
{Form1->Edit2->Text = "1"; }
else
Form1->Edit2->Text = Form1->Edit2->Text+ "1";
 
if ( h== 1)
{Form1->Edit1->Text = "1";}
else
 Form1->Edit1->Text =Form1->Edit2->Text+  "1";
 
       }
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,870
Записей в блоге: 12
22.11.2018, 18:55
Я так и не понял, что надо сделать. Вот честно. Ну, есть какие-то эдиты, ладно. И что? При чем тут ввод данных в эдиты и кнопка уже откуда не возьмись взявшаяся? И как я должен знать, в какой эдит вот в данную секунду что-то вводить? И почему оно там работает одновременно, и что значит "поочередность внесения данных"? В четные минуты вносить в первый эдит, а в нечетные - во второй - подойдет? Это тоже поочередно, если что... Задавайте вопросы так, чтобы ОТВЕЧАЮЩИМ, а не только ТС-у было что-то понятно!!!

Может, надо заменить кнопку с TButton на TSpeedButton, которая не получает фокус, а следовательно - не снимает фокуса с предыдущего контрола, и тогда просто добавлять цифру к активному в данный момент контролу?
0
7 / 7 / 1
Регистрация: 24.09.2018
Сообщений: 61
22.11.2018, 19:42  [ТС]
Производим клик в Edit1 данные вводятся с Button1. Производим клик в Edit2 данные вводятся также с Button1. Смысл состоит в том, чтобы не городить второй Button 2/
Пробовал и со TSpeedButton, но только если Edit 1 и Edit 2 и TSpeedButton находятся на одной форме- все вводится, если TSpeedButton находится на другой форме полное молчание.

C++
1
2
3
4
5
6
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
float f;
 if (Edit1->Focused())  Edit1->Text = Edit1->Text + "1";
 if (Edit2->Focused())  Edit2->Text = Edit2->Text + "1";
}
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
23.11.2018, 10:48
kazak-74, в таком случае используй tag в едитах. и на второй форме смотри какой едит передал tag (т.е. в фокусе) и соответно выполнение условия при нажатии на кнопку.

Не по теме:

И если честно , само условие непонятно! volvo, прав.
научись правильно формулировать вопрос. ведь программист мыслит логически , т.е. от логически ясного вопроса и будет правильный ответ.
а в данном случае: какой вопрос - такой и ответ.


0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
23.11.2018, 12:18
Если я правильно понял, то что-то вроде этого...
C++
1
2
3
4
void __fastcall TForm2::Button1Click(TObject *Sender)
{
   ((TEdit*)Form1->actif)->Text = ((TEdit*)Form1->actif)->Text + "1";
}
- кнопка на форме 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::FormShow(TObject *Sender)
{
    actif = Edit1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Click(TObject *Sender)
{
    actif = Edit1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit2Click(TObject *Sender)
{
    actif = Edit2;
}
- это в Unit1. И в Unit1.h добавить в public: TObject *actif;

Не по теме:

Да-а..., здорово вы себе упростили... .

0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,870
Записей в блоге: 12
23.11.2018, 15:35
Лучший ответ Сообщение было отмечено kazak-74 как решение

Решение

Цитата Сообщение от nick42 Посмотреть сообщение
что-то вроде этого...
ActiveControl - для слабаков, понятно же, это:
C++
1
2
3
4
5
void __fastcall TForm2::Button1Click(TObject *Sender)
{
    TEdit *edit = static_cast<TEdit*>(Form1->ActiveControl);
    if(edit) edit->Text = edit->Text + "1";
}
безо всяких дополнительных телодвижений - слишком просто. надо написать больше, больше...
2
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
23.11.2018, 15:58

Не по теме:

опять котячьи разборки...


Ну, красиво!... кто ж спорит.
1
7 / 7 / 1
Регистрация: 24.09.2018
Сообщений: 61
23.11.2018, 19:08  [ТС]
Спасибо volvo- Это круто. Заработало!!!!!!!!!!!!!!!!!!
Все таки почему со SpeedButton1Click проблема? Если есть возможность можете объяснить.
C++
1
2
3
4
5
6
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
float f;
 if (Edit1->Focused())  Edit1->Text = Edit1->Text + "1";
 if (Edit2->Focused())  Edit2->Text = Edit2->Text + "1";
}
Добавлено через 22 минуты
Все получилось и с компонентом SpeedButton1. Спасибо БОЛЬШОЕ.
0
7 / 7 / 1
Регистрация: 24.09.2018
Сообщений: 61
24.11.2018, 23:28  [ТС]
Добрый вечер. volvo представленный алгоритм Вами это есть не что иное как создание динамического компонента? Хочу до конца разобраться с этим вопросом.
C++
1
 TEdit *edit = static_cast<TEdit*>(Form1->ActiveControl);
Добавлено через 22 секунды
Заранее спасибо.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,870
Записей в блоге: 12
25.11.2018, 09:32
Нет, это получение ссылки на активный компонент и приведение ее к типу указателя на TEdit, никакие динамические компоненты тут не создаются
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.11.2018, 09:32
Помогаю со студенческими работами здесь

Необходимо получить данные из Edit другой формы
Не могу получить данные из Edit другой формы, почему не работает Label2-&gt;Caption = Form3-&gt;EditPort-&gt;Text; Пробовал...

Как перенести значения из одного компонента одной формы в другой компонент другой формы?
В общем ситуация смешная для профи,делаю программу для редактирования и печати вкладышей для дипломов на PHP,сделал две формы,нужнго...

Перенос введенных данных из Edit в другой Edit на другой форме (MFC)
Имеется: проект MFC в котором есть IDC_DIALOG1 и IDC_DIALOG2. Нужно: после нажатия кнопки на IDC_DIALOG1, открыть IDC_DIALOG2 и...

Динамически создать на форме два компонента Edit и компонент Button
Такая вот задачка: Динамически создать на форме два компонента Edit и компонент Button. При нажатии на кнопку содержимое строк...

Установить на форму компоненты ListBox и ComboBox, два компонента edit и кнопку
Установить на форму компоненты ListBox и ComboBox, два компонента edit и кнопку. По нажатию на кнопку текст из первого edit добавляется в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru