Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Lazarus

Войти
Регистрация
Восстановить пароль
 
shyub
235 / 120 / 25
Регистрация: 11.07.2013
Сообщений: 646
#1

Как узнать, какой компонент вызвал форму? - Lazarus

07.01.2017, 13:28. Просмотров 197. Ответов 2
Метки нет (Все метки)

Программа будет использоваться на компьютере с сенсорным монитором (мышки и клавиатуры не будет). Пользователю в процессе работы на 1-й и 2-й формах необходимо будет вводить в Edit-ы свои данные. Для этого есть два варианта:
1. По событию onClick соответствующего Edit-а вызывать экранную клавиатуру
Delphi
1
ShellExecute(0,nil,'osk.exe',nil,nil,SW_SHOW);
Но она может закрыть сам Edit и её придётся сдвигать, а так же мне нужны только цифры.
2. Создать свою 3-ю форму с клавиатурой, местоположение которой можно задавать при её вызове. Но как программно определить в какой Edit и на какой форме необходимо вводить эти данные. Есть, конечно, вариант типа флагов (при нажатии на Edit устанавливается какой-то номер или флаг, определяющий источник вызова), но это будет как-то “криво”. Можно ли эту задачу решить через Sender или Self и как?

Добавлено через 2 часа 13 минут
В Qt решение такой задачи заложено изначально. Хотелось бы решить так же красиво и в Lazarus-е.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2017, 13:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как узнать, какой компонент вызвал форму? (Lazarus):

Как узнать какой компонент сейчас в фокусе - Delphi
Привет. Такая задача. Мне по нажатию на кнопку нужно вставить в Memo опред. текст. На форме есть несколько Memo и Edit. При нажатии на...

Как узнать выбранный компонент - Delphi
Пишу прогу которая использует сканер штрих кодов. Штрих код сохраняется в базе (Firebird) в нескольких таблицах выборку из нужной таблиц я...

Как по нажатию кнопки поместить на форму компонент TImage и загрузить в него рисунок? - Delphi
Помогите pliz, нужно что бы при нажатии кнопки, на определённой форме многооконного приложения создавался компонент типа TImage с...

В какой компонент можно вставить несколько строчек... - Delphi
только таким образом, шоб строчки вносились целиком (как в NotePade, чёрт с ним что концовку видно не будет), а не разбивались по ширине...

Узнать какой ListBox Вызвал форму - C++ Builder
Привет, есть 8 ListBox-ов, для каждого из них пользователь может вызвать форму для редактирования строк. Как узнать из которого ListBox-а...

как узнать, каком компонент вызвал функцию? - C++ Builder
Привет! Если я например сделаю обработчик Onclick для какой нить кнопки то в функцию обработкика будет передаваться параметр *Sender, в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
23564 / 15558 / 4603
Регистрация: 22.10.2011
Сообщений: 27,590
Записей в блоге: 5
07.01.2017, 14:04 #2
Создать свою клавиатуру, и добавить к ней:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TFormOsk = class(TForm)
// ...
  private
    e : TEdit;
  public
    procedure ShowFrom(ed : TEdit);
  end;
 
// 
procedure TFormOsk.ShowFrom(ed: TEdit);
begin
  e := ed; // с E будет работать клавиатура
  Show;
  // тут же можно позаботиться, чтобы ed не оказался перекрыт формой
end;
, теперь достаточно при необходимости показа формы передать нужный контрол:
Pascal
1
2
3
4
procedure TForm1.Edit1Enter(Sender: TObject);
begin
  FormOsk.ShowFrom(sender as tedit);
end;
1
northener
3089 / 2146 / 442
Регистрация: 15.07.2013
Сообщений: 12,531
08.01.2017, 02:50 #3
Цитата Сообщение от volvo Посмотреть сообщение
Создать свою клавиатуру
И лучше как отдельный процесс. Головной боли меньше будет.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2017, 02:50
Привет! Вот еще темы с ответами:

Как узнать, какой контролл вызвал событие - C#
У меня есть 12 panel'ей. Они объединены в массив. Как бы мне сделать так, чтобы при нажатии на i-ую панель вылезало, ну, к примеру, "Hello,...

.NET 4.x Как узнать какой элемент вызвал ContextMenuStrip - C#
На форме есть 5 текстовых полей и 1 ContextMenuStrip. причем команды для полей у всех ContextMenuStrip одинаковые. Решил оставить только...

.NET 4.x Как узнать какой Button вызвал метод - C#
На форме несколько кнопок, которые вызывают один и тот же метот, допустим такой: void METOD() { MessageBox.Show(" Здесь должно...

Как узнать на какой компонент нажал? - Delphi
Например: Человек нажимает на кнопку и вылазит сообщение с его названием кнопки или т.п


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru