(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)
IBM DOMINO ENTERPRISE CLIENT ACCESS LICENSE AUTHORIZED USER ANNUAL SW SUBSCRIPTION & SUPPORT RENEWAL
SAP Crystal Server 2011 WIN INTL 5 CAL License
IBM RATIONAL Clearcase Floating User License + Sw Subscription & Support 12 Months
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Мир OLAP и Business Intelligence: новости, статьи, обзоры
Программирование на Visual С++
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100