7 / 7 / 4
Регистрация: 16.02.2013
Сообщений: 172
1

Ввод данных в компоненты Эдит1 1 и Эдит 2

21.09.2013, 09:02. Показов 1669. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день форумчани. Вопрос в следующем. На форме расположены компоненты: Эдит 1, Эдит 2 и Баттон 1. Задача такая с помощью кнопки Баттон 1 производить введение слова в Эдит 1 и Эдит 2, только не одновременно в Эдит 1 и Эдит 2, а по очереди. Т.е. кликнул по Эдит 1 ввел слово "Заяц" кликнул по Эдит 2 ввел тоже слово "Заяц" с помощью кнопки Баттон 1. Написал код но есть проблема. Если не трудно подскажите. Заранее благодарен.

С помощью этого кода вводится слово только в Эдит 1. Не могу найти некий разделитель который реагировал на Эдит 2.
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 float f;
        if (Edit1)
        {
        Edit1->Text =Edit1->Text  + "Заяц";}
 
        else if  (Edit2)
 
         {Edit2->Text =Edit2->Text  + "Заяц";}
}
С помощью этого кода слово вводится одновременно и в Эдит1 и в Эдит2.

C++
1
2
3
4
5
6
7
8
9
10
{
 float f;
        if (Edit1)
        {
        Edit1->Text =Edit1->Text  + "Заяц";}
 
         if  (Edit2)
 
         {Edit2->Text =Edit2->Text  + "Заяц";}
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2013, 09:02
Ответы с готовыми решениями:

Запретить ввод букв и символов в Эдит1
Здравствуйте форумчани. Разместил компонент Эдит1 на форме для проведения арифметических операций....

Ввод в стринггрид через эдит
Такая проблема.Добавлять данные в стринггрид могу но оно вводится в первую строчку.Например у меня...

Ввод в эдит ответа на поставленный вопрос
Нужно решить такую задачу: Есть два Label1(x) и 2(y). В них я вывожу x->Caption = random(100);...

Как запретить ввод цифр в поле Эдит?
Здравствуйте! Подскажите пожайлуста, как запретить ввод цифр в поле Эдит? В одном поле Эдит...

14
1408 / 571 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
21.09.2013, 10:05 2
Если не критично, используй вместо TButton TSpeedButton
C++
1
2
3
4
5
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
 if (Edit1->Focused())  Edit1->Text = Edit1->Text + "Заяц";
 if (Edit2->Focused())  Edit2->Text = Edit2->Text + "Заяц";
}
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
21.09.2013, 10:09 3
C++
1
2
3
4
5
6
7
8
9
10
11
// Header
class TForm1 : public TForm
{
__published:
    // ...
private:
    TEdit *ActiveEdit; // <--- Добавляем это
 
public:
    __fastcall TForm1(TComponent* Owner);
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
// CPP
// Этот обработчик - на OnClick всех нужных эдитов
void __fastcall TForm1::Edit1Click(TObject *Sender)
{
    ActiveEdit = dynamic_cast<TEdit*>(Sender);
}
 
// Этот - на кнопку
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    ActiveEdit->Text = ActiveEdit->Text + L"Заяц";
}
2
1408 / 571 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
21.09.2013, 10:27 4
UI, только в *.cpp вверху
C++
1
ActiveEdit=NULL;
и проверочку надо сделать
C++
1
2
3
4
5
// Этот - на кнопку
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    if(ActiveEdit) ActiveEdit->Text = ActiveEdit->Text + L"Заяц";
}
а то если ни разу на едит не нажали, то не долго и до AV
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
21.09.2013, 10:31 5
Цитата Сообщение от _Dimon_ Посмотреть сообщение
только в *.cpp вверху
Не "вверху", а в конструкторе формы... А можно и не NULL, а сразу Edit1, это будет типа "значения по умолчанию"
0
1408 / 571 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
21.09.2013, 10:33 6
да, только хотел написать ))
0
7 / 7 / 4
Регистрация: 16.02.2013
Сообщений: 172
22.09.2013, 09:32  [ТС] 7
Спасибо за поддержку _Dimon_и UI.

Добавлено через 22 часа 44 минуты
Здравствуйте Уважаемые форумчани. Сделал все получается. Попробовал создать Форму 2. Связал формы через код:
C++
1
2
3
4
void __fastcall TForm1::Edit1Click(TObject *Sender)
{
Form2->Show();
}
При клики на Эдит1 Форма2 появляется, но при нажатии на кнопку слово "Заяц" ,кнопка расположена на Форме2, не появляется. Если кнопки расположены на тойже форме что и Эдит1 то все получается, если вводить слово с другой формы то все молчит. Не подскажите. Заранее благодарен.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
22.09.2013, 09:54 8
VOVA-74, в таком случае для моего решения надо вынести ActiveEdit из класса формы, и сделать так:

Unit1.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
class TForm1 : public TForm
{
__published:
    // ...
private:
public:
    __fastcall TForm1(TComponent* Owner);
};
 
extern TEdit *ActiveEdit; // Вот так изменить
 
extern PACKAGE TForm1 *Form1;
и в CPP-файле:
C++
1
2
3
4
5
6
7
8
#include "Unit1.h"
#include "Unit2.h"
 
#pragma package(smart_init)
#pragma resource "*.dfm"
 
TForm1 *Form1;
TEdit *ActiveEdit; // Вот это
Тогда при нажатии кнопки будет срабатывать добавление, неважно, на одной или на разных формах находятся Эдиты и кнопка...
0
7 / 7 / 4
Регистрация: 16.02.2013
Сообщений: 172
22.09.2013, 10:17  [ТС] 9
Сделал как Вы сказали не чего не получается, молчит Эдит.
Unit1.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TEdit *Edit1;
        TEdit *Edit2;
        void __fastcall SpeedButton1Click(TObject *Sender);
        void __fastcall Edit1Click(TObject *Sender);
private:    // User declarations
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
 extern TEdit *ActiveEdit;
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
и в CPP-файле:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TEdit *ActiveEdit;
//---------------------------------------------------------------------------
код кнопки:
C++
1
2
3
4
void __fastcall TForm2::SpeedButton1Click(TObject *Sender)
{
 if (Form1->Edit1->Focused())  Form1->Edit1->Text = Form1->Edit1->Text + "2";
}
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
22.09.2013, 10:22 10
Это не мой метод... У меня использовались Button-ы, а не SpeedButton-ы (и обработчик нажатия был совершенно другой), не надо перемешивать 2 этих подхода...
0
7 / 7 / 4
Регистрация: 16.02.2013
Сообщений: 172
22.09.2013, 10:43  [ТС] 11
Сделал через Батон1. Молчит.
C++
1
2
3
4
void __fastcall TForm2::Button1Click(TObject *Sender)
{
  if(ActiveEdit) ActiveEdit->Text = ActiveEdit->Text + "Заяц";
}
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
22.09.2013, 11:00 12
Ну, и я сделал:
edits.zip

Ничего не молчит, работает...
1
7 / 7 / 4
Регистрация: 16.02.2013
Сообщений: 172
22.09.2013, 11:23  [ТС] 13
Да получилось. У Вас новерное версия Билдера другая на сколько я помню Вы мне это говорили. Когда у нас тема была по поводу мерцания графика. У меня отсутствует в событиях инспектора объектов данное направления:

C++
1
void __fastcall TForm1::btnShowSecondFormClick(TObject *Sender)
Выход нашел сделал вот так. Работает. Большое спасибо.
C++
1
2
3
4
5
void __fastcall TForm1::Edit1Click(TObject *Sender)
{
     ActiveEdit = dynamic_cast<TEdit*>(Sender);
    Form2->Show();
}
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
22.09.2013, 11:32 14
Цитата Сообщение от VOVA-74 Посмотреть сообщение
btnShowSecondFormClick
- это просто обработчик OnClick кнопки, которая называется btnShowSecondForm...
0
7 / 7 / 4
Регистрация: 16.02.2013
Сообщений: 172
24.09.2013, 20:34  [ТС] 15
Понял спасибо.
0
24.09.2013, 20:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.09.2013, 20:34
Помогаю со студенческими работами здесь

Открыть документ через Эдит1
Здравствуйте форумчани. Вопрос в следующем. Хотелось открыть документ с расширением .txt через...

Отключить ввод логина и пароля без компоненты Database
Не могу избавиться от авторизации при каждом входе, Обычно, используя database, где достаточно было...

Как правильно заменить ввод данных простой на ввод с клавиатуры?
#include &quot;stdafx.h&quot; #include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; int...

Вывод данных с базы данных через компоненты Interbase
Здравствуйте, пытаюсь вывести данные с базы данных с помощью компонентов Interbase, но не выходит....

Потоковый ввод и ввод данных. Работа с числами
Ввести с экрана два нат. числа. Найти частное первого на второе и определить, встречается ли среду...

Ввод структурированных данных в файл и вывод данных из этого файла на экран (сделать хранилище данных в файле)
Здравствуйте) помогите написать программу, осуществляющую ввод структурированных данных в файл и...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru