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

Lazarus

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

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

07.01.2017, 13:28. Просмотров 189. Ответов 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-е.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2017, 13:28     Как узнать, какой компонент вызвал форму?
Посмотрите здесь:

Ошибка: Проект вызвал класс исключения External:SIGSEGV - Lazarus
Привет! Работаю над приложением для работы с оценками учеников. Решил начать с раздела настроек. При вводе кол-ва оценок учащихся проект...

Проект вызвал класс исключения 'EReadError' с сообщением: Invalid Value for property - Lazarus
Делаю программу-тест, при компиляции ошибок в коде не выдает, а вот запускать отказывается, выдавая ошибку, что в заголовке. После этого...

Reset вызвал класс исключений "RunError2" - Lazarus
Запись в файл делал, а вот прочитать не могу AssignFile(fileStructur, opendirectory + '/structura.dat'); AssignFile(fileMass,...

Как установить компонент - Lazarus
Несколько проблем. 1). Нашел компонент TGradButton на офф сайте. Дальше - непонятно. Снизу есть Download from SVN You can also...

Как создать компонент на форме? - Lazarus
Можно ли как-нибудь сделать, чтобы при нажатии на TButton на форме появлялась панель? Вариант с Visible не предлагать, так как я заранее не...

Как подключить компонент DBGrid в Lazarus? - Lazarus
При попытке подключения компонента DBGrid в Lazarus к таблице в СУБД MySQL с помощью задания свойства DataSource выдаётся следующее...

Lazarus компонент inet как пользоваться ftp - Lazarus
Lazarus компонент inet как пользоваться ftp компонентом , знаю как работать с tcp !!,напишите примерные отличия , и напишите пример если...

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

TPageControl, как перенести компонент с формы на вкладку? - Lazarus
нет описания в книгах TPageControl. я так понимаю, что это нечто вроде нескольких вкладок формы приложения. но вобщем методом тыка ничего...

Как сделать, чтобы компонент Shape передвигался? - Lazarus
Нужно очень сильно. Я по лазарусу не чего не пойму:wall:


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
23254 / 15245 / 4449
Регистрация: 22.10.2011
Сообщений: 27,133
Записей в блоге: 4
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;
northener
3068 / 2125 / 438
Регистрация: 15.07.2013
Сообщений: 12,326
08.01.2017, 02:50     Как узнать, какой компонент вызвал форму? #3
Цитата Сообщение от volvo Посмотреть сообщение
Создать свою клавиатуру
И лучше как отдельный процесс. Головной боли меньше будет.
Ответ Создать тему
Опции темы

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