Конференция "Прочее" » Передать обработку событий форме.
 
  • kashey © (20.08.18 21:59) [0]
    До определенного момента в программе на главной форме не было компонентов, которые могли бы получить фокус. Пришлось добавить TreeView, который сразу же получает фокус. Как по клику на форме вернуть ей фокус? Отваливается сразу все события которые я повесил на формы:
    OnMouseWheelDown
     OnMouseWheelUp
     OnKeyPress
     OnKeyDown
     OnKeyUp


    Можно было бы взять любой другой TWinControl и ему передавать фокус, но например TPanel не имеет все эти 5 событий. Помогите выкрутится.
  • kilkennycat © (20.08.18 22:18) [1]
    поправь анкету. там почему-то высшее образование стоит.
    (Ща Керк скажет, что зло и хамство )) )
  • xayam © (20.08.18 22:25) [2]
    Keypreview=true
  • xayam © (20.08.18 22:33) [3]
    Mouse Equivalent of Key Preview?
    http://www.delphigroups.info/2/c6/513110.html
  • aka © (21.08.18 11:07) [4]
    Ну а такое зачудить, что мешает:


    unit Unit1;

    interface

    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, ExtCtrls, StdCtrls, Mask, ComCtrls;

    type
     TForm1 = class(TForm)
       procedure FormCreate(Sender: TObject);
       procedure FormActivate(Sender: TObject);
     private
       { Private declarations }
     public
       { Public declarations }
     end;

     TMyPanel = class(TCustomPanel)
     protected
       procedure WMGetDlgCode(var Msg: TMessage); message WM_GETDLGCODE;
       procedure KeyDown(var Key: Word; Shift: TShiftState); override;
       procedure KeyUp(var Key: Word; Shift: TShiftState); override;
       procedure KeyPress(var Key: Char); override;
       function DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; override;
       function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; override;
     end;

    var
     Form1: TForm1;
     MyPanel: TMyPanel;
     
    implementation

    {$R *.dfm}

    procedure TForm1.FormCreate(Sender: TObject);
    begin
     MyPanel := TMyPanel.Create(Self);
     MyPanel.Parent := Self;
    end;

    procedure TForm1.FormActivate(Sender: TObject);
    begin
     MyPanel.SetFocus;
    end;

    procedure TMainPanel.WMGetDlgCode(var Msg: TMessage);
    begin
     inherited;
     Msg.Result := Msg.Result or DLGC_WANTARROWS or DLGC_WANTTAB;
    end;

    procedure TMyPanel.KeyDown(var Key: Word; Shift: TShiftState);
    begin
     //
    end;

    procedure TMyPanel.KeyUp(var Key: Word; Shift: TShiftState);
    begin
     //
    end;

    procedure TMyPanel.KeyPress(var Key: Char);
    begin
     //
    end;

    function TMyPanel.DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean;
    begin
     //
    end;

    function TMyPanel.DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean;
    begin
     //
    end;

    end.

 
Конференция "Прочее" » Передать обработку событий форме.
Есть новые Нет новых   [118422   +52][b:0][p:0.001]