![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание формы по hot key [WinXP]
Viktop © (2005-07-13 11:33:00)Назначил горячую клавишу (F3), по нажатию на которую создаётся форма. Нажимаю F3 и форма создаётся, но если нажать ещё раз, то появится ещё одна форма. Как этого избежать
procedure TfmMain.WMHotkey(var msg: TWMHotkey);
var
sbFormSearch: TfmSearch;
begin
if (msg.hotkey = 1) then
begin
sbFormSearch := TfmSearch.Create(Application);
try
sbFormSearch.ShowModal;
finally
sbFormSearch.Free;
end;
end;
end;
Пробовал ставить условие if (msg.hotkey = 1) and (sbFormSearch=nil) then, но тогда форма вобще не создаётся.
Digitman (2005-07-13 12:39:00) [21]ну и где ты в этом коде выполнил рекомендации из [1] ?
они были тебе даны с учетом
> if (msg.hotkey = 1) and (sbFormSearch=nil)
> then
Viktop (2005-07-13 12:35:00) [22]В Futo-create form стоит fmMain, в Available - fmSearch.
Регистрирую Hot key
procedure TfmMain.FormCreate(Sender: TObject);
begin
RegisterHotkey(Handle, 1, 0, VK_F3);
end;
привожу ещё раз код
private // в секции объявлений формы
procedure WMHotkey( var msg: TWMHotkey ); message WM_HOTKEY;
procedure TfmMain.WMHotkey(var msg: TWMHotkey);
var
sbFormSearch: TfmSearch;
begin
if (msg.hotkey = 1) then
begin
sbFormSearch := TfmSearch.Creat e(Application);
try
sbFormSearch.ShowModal;
finally
FreeAndNil(sbFormSearch)
end;
end;
end;
Нажимаю F3, нажимаю F3 ещё раз (предыдущее окно поиска не закрываю) и появляется ещё одно окно поиска.
FreeAndNil(sbFormSearch) форма освободится только после закрытия предыдущей.
Есть временное решение:
procedure TfmMain.WMHotkey(var msg: TWMHotkey);
var
sbFormSearch: TfmSearch;
begin
if (msg.hotkey = 1) then
begin
sbFormSearch := TfmSearch.Create(Application);
try
UnRegisterHotkey(Handle, 1);
sbFormSearch.ShowModal;
finally
sbFormSearch.Free;
RegisterHotkey(Handle, 1, 0, VK_F3);
end;
end;
end;
Digitman (2005-07-13 12:16:00) [23]
> Viktop (13.07.05 12:10) [5]
приводи код
Viktop (2005-07-13 12:10:00) [24]to Digitman
Всё равно появляется (если нажимать F3 подряд, не закрывая появившегося окна)
_dimka (2005-07-13 11:42:00) [25]Извините первый клиент выдал 406 ошибку я думал что не отправилось :)
_dimka (2005-07-13 11:40:00) [26]ну например убрать
> sbFormSearch := TfmSearch.Create(Application);
> try
> sbFormSearch.ShowModal;
> finally
> sbFormSearch.Free;
> end;
и аоставить sbFormSearch.ShowModal;
_dimka (2005-07-13 11:38:00) [27]
> Назначил горячую клавишу (F3), по нажатию на которую создаётся
> форма. Нажимаю F3 и форма создаётся, но если нажать ещё
> раз, то появится ещё одна форма. Как этого избежать
ну например убрать
> sbFormSearch := TfmSearch.Create(Application);
> try
> sbFormSearch.ShowModal;
> finally
> sbFormSearch.Free;
> end;
а прсто поставить
sbFormSearch.ShowModal;
Digitman (2005-07-13 11:37:00) [28]сделай sbFormSearch полем класса формы TfmMain
вместо
sbFormSearch.Free
пиши
FreeAndNil(sbFormSearch)