Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
27:04:2008, 09:23
|
|
Новенький ![]() Группа: Программист Сообщений: 6 Регистрация: 6:04:2008 Пользователь №: 16 412 Репутация: 0
|
Есть несколько Edit ов в зависимости от того в каком Edite стоит курсор туда и нужно вывести информацию
примерно : если курсор стоит в Edit1 то Edit1->Text = Edit1->Text + "0"; если в Edit2 то Edit2->Text = Edit2->Text + "0"; итд ... сори если было в гугле находил про делфи и vb про с++ не нашёл |
|
Сообщение
#1
|
|
![]() |
|
|
27:04:2008, 10:44
|
|
Новенький ![]() Группа: Программист Сообщений: 64 Регистрация: 26:08:2007 Из: Харьков Пользователь №: 12 480 Специализация: С/C++ Репутация: 1
|
Судя по Edit1->Text это C++ Builder, т.е. vcl. Чем в таком случае оно отличается от Delphi? Что-то вроде
Код if (Edit1->Focused())
Edit1->Text += "0"; |
|
Сообщение
#2
|
|
|
|
27:04:2008, 16:21
|
|
Новенький ![]() Группа: Программист Сообщений: 6 Регистрация: 6:04:2008 Пользователь №: 16 412 Репутация: 0
|
Да теоретически вроде правильно но вот в программе после этого кода фокус со всех обьектов убирается и ничего никому не присваивает (
проверил написанием простой проги - такие результаты void __fastcall TForm1::Button1Click(TObject *Sender) { if(Edit1->Focused()==0) Edit1->Text="Превед"; if (Edit2->Focused()==0) Edit2->Text="Hello"; } тут присваивает в обоих случаях ... при изменении 0 на 1, где 1 не присваивает во всех случаях местонахождение моего курсора не влияет... такие вот наблюдения Сообщение отредактировал Dos - 27:04:2008, 16:24 |
|
Сообщение
#3
|
|
|
|
27:04:2008, 16:59
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 100 Регистрация: 27:02:2004 Пользователь №: 296 Репутация: 5
|
TForm1::Button1Click Ну так естественно - когда кликаете на кнопку, фокус с Edit'а переходит на Button1!Попробуйте каждому Edit'у назначить нижеприведённый обработчик OnEnter. Код void __fastcall TForm1::EditEnter(TObject *Sender)
{ ((TEdit*)Sender)->Text = "I'm here!"; } |
|
Сообщение
#4
|
|
|
|
27:04:2008, 17:27
|
|
Новенький ![]() Группа: Программист Сообщений: 64 Регистрация: 26:08:2007 Из: Харьков Пользователь №: 12 480 Специализация: С/C++ Репутация: 1
|
Вот меня уже опередили.
Код TEdit *LastFocusedEdit = NULL; void __fastcall TForm1::Edit1Enter(TObject *Sender) { LastFocusedEdit = Edit1; } void __fastcall TForm1::Edit2Enter(TObject *Sender) { LastFocusedEdit = Edit2; } void __fastcall TForm1::Button1Click(TObject *Sender) { if (LastFocusedEdit != NULL) LastFocusedEdit->Text = "Hello"; } |
|
Сообщение
#5
|
|
|
|
27:04:2008, 17:51
|
|
Гуру ![]() ![]() ![]() Группа: Достойный программист Сообщений: 301 Регистрация: 3:11:2007 Пользователь №: 13 517 Репутация: 0
|
по-моему человеку нужен не фокус, а сам факт наведения курсора
|
|
Сообщение
#6
|
|
|
|
27:04:2008, 18:32
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 100 Регистрация: 27:02:2004 Пользователь №: 296 Репутация: 5
|
|
|
Сообщение
#7
|
|
|
|
27:04:2008, 18:48
|
|
Новенький ![]() Группа: Программист Сообщений: 6 Регистрация: 6:04:2008 Пользователь №: 16 412 Репутация: 0
|
№4, №5 thx всё компилируется но положение курсора не отслеживается(может я не так что т делаю
№6 у меня калькулятор с 2 окошками Edit туда кнопками вводятся цифры, после ввода первого числа мы ставим курсор(мышкой его ставим или табом без разницы ) на окошко второго Edita и тыкая кнопки набираем в нём число.(если я набираю там числа с клавиатуры то всё работает, а вот мною созданными кнопками пока нет.) Я не знаю что тут нужно фокус или наведение курсора т.к с этим ещё не работал(опыта мало). Сообщение отредактировал Dos - 27:04:2008, 18:52 |
|
Сообщение
#8
|
|
|
|
27:04:2008, 18:53
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 100 Регистрация: 27:02:2004 Пользователь №: 296 Репутация: 5
|
у меня калькулятор с 2 окошками Edit туда кнопками вводятся цифры, после ввода первого числа мы ставим курсор на окошко второго Edita и тыкая кнопки набираем в нём число. Видимо, я чего-то недопонимаю: зачем Вам весь этот огород, почему нельзя просто вводить данные в Edit'ы напрямую?
|
|
Сообщение
#9
|
|
|
|
27:04:2008, 19:36
|
|
Новенький ![]() Группа: Программист Сообщений: 64 Регистрация: 26:08:2007 Из: Харьков Пользователь №: 12 480 Специализация: С/C++ Репутация: 1
|
Dos у меня прекрасно работает мой пример. Правда, если после запуска проги сразу нажать кнопку, то тогда действительно ничего не работает (естественно, т.к. LastFocusedEdit = NULL). Если єто важно, можно в свойствах Form1 указать ActiveControl = Edit1.
Вот файлы проекта. Сорри, что 5 версии Билдер, новее нет.
Прикрепленные файлы
|
|
Сообщение
#10
|
|
|
|
28:04:2008, 08:09
|
|
Новенький ![]() Группа: Программист Сообщений: 6 Регистрация: 6:04:2008 Пользователь №: 16 412 Репутация: 0
|
Благодарю всех кто пробовал помочь
|
|
Сообщение
#11
|
|
![]() |
|
Текстовая версия | Сейчас: 17:05:2008 - 04:50 |