Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Сокровищница
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  23:11[Войти] | [Зарегистрироваться]

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

Рафаиль Ахмедзянов
дата публикации 12-04-2009 06:49

К вопросу о создании 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;



Смотрите также материалы по темам:
[Модальные формы (режим ShowModal)] [Получение/потеря фокуса] [Splash-формы]

 Обсуждение материала [ 11-09-2009 01:19 ] 23 сообщения
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования