|
Тема |
Re: FormShortCut [re: lmmanuel] |
|
Автор | Desso (Нерегистриран) | |
Публикувано | 28.09.06 10:55 |
|
|
Използвам следната процедура върху форма с TabSheet върху нея:
procedure TabCreate(const sName,sCaption:string; var ChildPageControl:TPageControl);
begin
with TTabSheet.Create(ChildPageControl) do
begin
PageControl := ChildPageControl;
Name := sName;
Caption := sCaption;
end;
end;
която създава и визуализира нов ТабШиит, а върху него създавам фрейм с контроли:
NewFrame:=TNewFrame.Create(ChildPageControl.Pages[1]);
NewFrame.Parent:=ChildPageControl.Pages[1];
идеята е когато трябва да се въвежда информация - създава се TabSheet, създава се фрейма, попълват се контролите и се дава запис с някой от функционалните клавиши F1 - F10, премахва се фрейма, премахва се TabSheeta. OnKeyDown не върши работа, защото не действа когато фокъсът не е върху формата. След запис (самият запис причинява забавянето което споменах) използвам следния код за да затворя TabSheet - а:
SlavePageControl.Pages[1].Free;
който се извиква от:
procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
Handled:=true;
case Msg.CharCode of
VK_ESCAPE:Exit();
VK_F10:Save.Click();
else
Handled:=false;
end;
end;
но от време на време ми изкарва въпросния Access Violation. Не е ясно дали юзъра не натиска два клавиша едновременно и с това да предизвиква странни обработки на събитията (примерно F10+F11 или F10+F9), което обаче не знам как да избегна. Лошото е че няма property Release на TabSheet-a, иначе всичко си става автоматично...
|
| |
|
|
|