(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

К вопросу о создании login-формы

Источник: delphikingdom

В login-форме не получается установить фокус на текстовом поле для ввода имени пользователя. Пользователь вынужден щелкать мышью на текстовом поле, что, конечно, не очень ему удобно. Предлагается вариант решения этой проблемы.

Несколько раз я на форумах встречал вопрос по следующей ситуации:

  1. Запускается Главная форма.
  2. После ее загрузки автоматически запускается login-форма в модальном режиме (ShowModal).
  3. В появившейся login-форме не получается установить фокус на текстовом поле для ввода имени пользователя. Пользователь вынужден щелкать мышью на текстовом поле, что, конечно, не очень ему удобно.

Меня тоже коснулась эта проблема. Возможно она давно уже решена, но мне найти решение на форумах не удалось. Зато удалось как-то получить решение самому.

Итак:

  1. Главная форма - frm_Main, login-форма - frm_Security2_Login. Поле ввода имени пользователя в login-форме - edt_Login
  2. В событии Activate Главной формы автоматически вызывается login-форма: frm_Security2_Login.ShowModal;
  3. В событии Show login-формы делаем три вещи:
    • Имитируем щелчок левой кнопки мыши в поле ввода имени пользователя.
    • Имитируем щелчок левой кнопки мыши в левом верхнем углу login-формы.
    • Вытаскиваем login-форму на передний план и активизируем ее.

Вот и все. Наверное, мною изобретен очередной велосипед, а специалисты найдут массу изъянов, но ...

Собственно код

procedure Tfrm_Security2_Login.FormShow(Sender: TObject);
var x,y: Integer;
    pt: TPoint;
begin
  // Имитируем щелчок левой кнопки мыши в поле ввода имени пользователя
  x:=edt_Login.Left+7;
  y:=edt_Login.Top+7;
  SetCursorPos(x,y);
  mouse_event(MOUSEEVENTF_LEFTDOWN,x,y,0,0);
  mouse_event(MOUSEEVENTF_LEFTUP,x,y,0,0);

  // Имитируем щелчок левой кнопки мыши в левом верхнем углу login-формы
  SetCursorPos(7,7);
  Application.ProcessMessages;
  GetCursorPos(pt);
  SetCursorPos(pt.x,pt.y);

  // Вытаскиваем login-форму на передний план и активизируем ее  
  Windows.SetForegroundWindow(Self.Handle);
end;

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 05.05.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Delphi Professional Named User
Enterprise Connectors (1 Year term)
ABBYY FineReader 14 Standard Full
Купить Антивирус Dr.Web Server Security Suite для сервера
Enterprise Connectors (1 Year term)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Delphi - проблемы и решения
Каждый день новые драйверы для вашего компьютера!
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100