Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Определение положения курсора, Определение положения курсора
Dos
Вставить ник
сообщение 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
 
Новая тема 
Ответов (1 - 10)
shisik
Вставить ник
сообщение 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
Dos
Вставить ник
сообщение 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 не присваивает во всех случаях местонахождение моего курсора не влияет... такие вот наблюдения biggrin.gif вопрос не снят

Сообщение отредактировал Dos - 27:04:2008, 16:24
Подняться вверх 
 
Сообщение #3
Yason
Вставить ник
сообщение 27:04:2008, 16:59
Цитата Ответить 


Продвинутый
**

Группа: Программист
Сообщений: 100
Регистрация: 27:02:2004
Пользователь №: 296



Репутация: - 5 +


Цитата(Dos @ 27:04:2008 - 19:21) *
TForm1::Button1Click
Ну так естественно - когда кликаете на кнопку, фокус с Edit'а переходит на Button1!

Попробуйте каждому Edit'у назначить нижеприведённый обработчик OnEnter.
Код
void __fastcall TForm1::EditEnter(TObject *Sender)
{
    ((TEdit*)Sender)->Text = "I'm here!";
}
Подняться вверх 
 
Сообщение #4
shisik
Вставить ник
сообщение 27:04:2008, 17:27
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 64
Регистрация: 26:08:2007
Из: Харьков
Пользователь №: 12 480
Специализация: С/C++



Репутация: - 1 +


Вот меня уже опередили. smile.gif Я хотел предложить для каждого Edit создать обработчик получения фокуса, в котором в глобальную переменную (типа TEdit *LastFocusedEdit;) записывался б указатель на этот объект. А при нажатии кнопки тогда писать уже по этому адресу. Что-то вроде такого:
Код
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
gamecreator
Вставить ник
сообщение 27:04:2008, 17:51
Цитата Ответить 


Гуру
***

Группа: Достойный программист
Сообщений: 301
Регистрация: 3:11:2007
Пользователь №: 13 517



Репутация: - 0 +


по-моему человеку нужен не фокус, а сам факт наведения курсора
Подняться вверх 
 
Сообщение #6
Yason
Вставить ник
сообщение 27:04:2008, 18:32
Цитата Ответить 


Продвинутый
**

Группа: Программист
Сообщений: 100
Регистрация: 27:02:2004
Пользователь №: 296



Репутация: - 5 +


gamecreator
Цитата(Dos @ 27:04:2008 - 12:23) *
в каком Edite стоит курсор

Очевидно, речь не о мышином курсоре.
Подняться вверх 
 
Сообщение #7
Dos
Вставить ник
сообщение 27:04:2008, 18:48
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 6
Регистрация: 6:04:2008
Пользователь №: 16 412



Репутация: - 0 +


№4, №5 thx всё компилируется но положение курсора не отслеживается(может я не так что т делаю ohmy.gif )

№6 у меня калькулятор с 2 окошками Edit туда кнопками вводятся цифры, после ввода первого числа мы ставим курсор(мышкой его ставим или табом без разницы ) на окошко второго Edita и тыкая кнопки набираем в нём число.(если я набираю там числа с клавиатуры то всё работает, а вот мною созданными кнопками пока нет.) Я не знаю что тут нужно фокус или наведение курсора т.к с этим ещё не работал(опыта мало).

Сообщение отредактировал Dos - 27:04:2008, 18:52
Подняться вверх 
 
Сообщение #8
Yason
Вставить ник
сообщение 27:04:2008, 18:53
Цитата Ответить 


Продвинутый
**

Группа: Программист
Сообщений: 100
Регистрация: 27:02:2004
Пользователь №: 296



Репутация: - 5 +


Цитата(Dos @ 27:04:2008 - 21:48) *
у меня калькулятор с 2 окошками Edit туда кнопками вводятся цифры, после ввода первого числа мы ставим курсор на окошко второго Edita и тыкая кнопки набираем в нём число.
Видимо, я чего-то недопонимаю: зачем Вам весь этот огород, почему нельзя просто вводить данные в Edit'ы напрямую?
Подняться вверх 
 
Сообщение #9
shisik
Вставить ник
сообщение 27:04:2008, 19:36
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 64
Регистрация: 26:08:2007
Из: Харьков
Пользователь №: 12 480
Специализация: С/C++



Репутация: - 1 +


Dos у меня прекрасно работает мой пример. Правда, если после запуска проги сразу нажать кнопку, то тогда действительно ничего не работает (естественно, т.к. LastFocusedEdit = NULL). Если єто важно, можно в свойствах Form1 указать ActiveControl = Edit1.

Вот файлы проекта. Сорри, что 5 версии Билдер, новее нет.
Прикрепленные файлы
Прикрепленный файл  activecontrol.zip ( 3.18 килобайт ) Кол-во скачиваний: 5
 
Подняться вверх 
 
Сообщение #10
Dos
Вставить ник
сообщение 28:04:2008, 08:09
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 6
Регистрация: 6:04:2008
Пользователь №: 16 412



Репутация: - 0 +


Благодарю всех кто пробовал помочь biggrin.gif Всё заработало как надо THX shisik
Подняться вверх 
 
Сообщение #11


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 17:05:2008 - 04:50
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net