Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

При нажатии TAB фокус не перескакивает с одного контрола на др.   Найти похожие ветки 

 
gdaujk ©   (2004-12-16 10:27) [0]

program MyProg;

uses
 Windows,
 Messages;

procedure CreateControls(Wnd: HWND);
begin
 InitCommonControls;

 Group1 := CreateWindow("button", "Âðåìÿ äåéñòâèÿ",
                 WS_CHILD or WS_VISIBLE  or WS_TABSTOP
                       or WS_GROUP or BS_GROUPBOX,
                      7, 3, 176, 56,
                      Wnd, 0, hinstance, nil);

 hLab :=  CreateWindow("static", "×àñ",
                      WS_CHILD or WS_VISIBLE or SS_LEFT or
                      WS_GROUP,
                      15, 29, 19, 13,
                      Wnd, 1, hInstance, nil);

 hEd := CreateWindowEx(WS_EX_CLIENTEDGE ,"edit", nil,
                      WS_CHILD or WS_VISIBLE or WS_TABSTOP or
                      ES_LEFT or ES_READONLY,
                      43, 28, 36, 18,
                      Wnd, 2, hInstance, nil);

 hUD := CreateUpDownControl(WS_CHILD or WS_BORDER or
                      WS_VISIBLE or WS_TABSTOP or UDS_MY,
                      0, 0, 0, 0,
                      Wnd, 3, hInstance,
                      hEd, 23, 0, 0);

 mLab := CreateWindow("static", "ìèíóòà",
                      WS_CHILD or WS_VISIBLE or SS_LEFT or
                      WS_GROUP,
                      90, 29, 36, 13,
                      Wnd, 4, hInstance, nil);

 mEd := CreateWindowEx(WS_EX_CLIENTEDGE ,"edit", nil,
                      WS_CHILD or WS_VISIBLE or WS_TABSTOP or
                      ES_LEFT or ES_READONLY,
                      135, 28, 36, 18,
                      Wnd, 5, hInstance, nil);

 mUD := CreateUpDownControl(WS_CHILD or WS_BORDER or WS_VISIBLE or WS_TABSTOP or UDS_MY,
                      0, 0, 0, 0,
                      Wnd, 6, hInstance,
                      mEd, 59, 0, 0);
end;
 

{WinMain}

function WinMain(aWND: HWND; aMsg: Integer; aWParam: WPARAM; aLParam: LPARAM): LRESULT; stdcall;

 procedure RadioClick(Off: Boolean);
 begin
   if HiWord(awParam) = BN_CLICKED then
   begin
     EnableWindow(MusBtn, not Off);
     MyOpt.ShutDown := Off;
   end;
 end;

begin
 Result:=0;
 case aMsg of
   WM_CREATE:
     begin
       CreateControls(aWND);
     end;
   WM_COMMAND :
     begin
     case LoWord(awParam) of
       10: RadioClick(True);
       11: RadioClick(False);
       end;
     end;

   MM_MCINOTIFY:
     begin
       CloseMCI(aWnd);
       if MyOpt.CloseAfterStop and Play
          then PostMessage (aWnd , WM_CLOSE, 0, 0);
     end;

   
   WM_DESTROY{WM_CLOSE}:
     begin
       DeleteObject(MainFont);
       DelateSysTrayPlease;
       PostQuitMessage(0);
       Result:=0;
       exit;
     end;
 else
   Result := DefWindowProc(aWND, aMsg, aWParam, aLParam);
 end;
end;

begin
 WC.style := CS_HREDRAW or CS_VREDRAW;
 WC.lpfnWndProc := @WinMain;
 WC.cbClsExtra := 0;
 WC.cbWndExtra := 0;
 WC.hInstance := HInstance;
 WC.hIcon := LoadIcon(hInstance, PChar("MAINICON"));
 WC.hCursor := LoadCursor(0, IDC_ARROW);
 WC.hbrBackground := COLOR_BTNFACE + 1;
 WC.lpszMenuName := nil;
 WC.lpszClassName := ClassName;

 RegisterClass(WC);

 MainWND := CreateWindowEx(WS_EX_CONTROLPARENT ,ClassName,
                         Name,
                         WS_CAPTION or WS_SYSMENU or   WS_MINIMIZEBOX,
                         CenterX(291),
                         CenterY(198),
                         307, 197,
                         0, 0, hInstance, nil);

 SysMenu := GetSystemMenu(MainWND, False);
 DeleteMenu(SysMenu, SC_MAXIMIZE, MF_BYCOMMAND);
 DeleteMenu(SysMenu, SC_SIZE, MF_BYCOMMAND);

 GetOptions;

 if not (LoadWithParam and MyOpt.Minimize)
   then ShowWindow(MainWnd, 1);

 UpdateWindow(MainWnd);

 while(GetMessage(Mes, 0, 0, 0)) do
 begin
   TranslateMessage(Mes);
   DispatchMessage(Mes);
 end;
end.


 
gdaujk ©   (2004-12-16 10:34) [1]

WM_KEYUP:
     begin
     if awParam = VK_TAB
         then SetFocus(offRadio) ;
     end;


 
gdaujk ©   (2004-12-16 10:38) [2]

offRadio := CreateWindow("button", "Âûêëþ÷èòü êîìïüþòåð",
                     WS_CHILD or WS_VISIBLE  or WS_TABSTOP  or BS_AUTORADIOBUTTON,
                      15, 92, 134, 18,
                      Wnd, 10, hinstance, nil);


 
DVM ©   (2004-12-16 10:39) [3]


> gdaujk ©   (16.12.04 10:34) [1]


> WM_KEYUP:
>      begin
>      if awParam = VK_TAB
>          then SetFocus(offRadio) ;
>      end;

Если это написано в главной оконной процедуре, то с какой стати это должно работать?


 
gdaujk ©   (2004-12-16 10:43) [4]

Ну, а как тогда сделать, чтоб фокус всё же менялся ???


 
DVM ©   (2004-12-16 10:56) [5]


> Ну, а как тогда сделать, чтоб фокус всё же менялся ???

В цикл выборки сообщений поставить проверку и передачу фокуса. Или у каждого контрола в его оконной процедуре.


 
SVM (Perm)   (2004-12-16 13:25) [6]

Смотри IsDialogMessage...



Страницы: 1 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.042 c
3-1105313703
Apophis
2005-01-10 02:35
2005.02.06
Поле MEMO и SQL запрос с параметром LIKE....


14-1106094680
TButton
2005-01-19 03:31
2005.02.06
Starting, where the story ending...


14-1105968533
Layner
2005-01-17 16:28
2005.02.06
Патчи к своей программе.


1-1106634562
Mamed
2005-01-25 09:29
2005.02.06
RTF Fayli


6-1100945155
Sicilla
2004-11-20 13:05
2005.02.06
Несовместимость типов