Конференция "Начинающим" » Делегировать событие другому обработчику
 
  • kashey © (01.03.18 10:29) [0]
    В фокусе ListBox1.
    Можно ли сделать по примеру ниже или может как-то через SendMessage?
    unit Unit1;

    interface

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

    type
     TForm1 = class(TForm)
       ListBox1: TListBox;
       procedure ListBox1KeyDown(Sender: TObject; var Key: Word;
         Shift: TShiftState);
       procedure FormKeyDown(Sender: TObject; var Key: Word;
         Shift: TShiftState);
     private
       { Private declarations }
     public
       { Public declarations }
     end;

    var
     Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.ListBox1KeyDown(Sender: TObject; var Key: Word;
     Shift: TShiftState);
    begin
     1)выполнить какой-то код
     2)Делегировать дальше в TForm1.FormKeyDown
    end;

    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
     Shift: TShiftState);
    begin
     3)выполнить код этого обработчика
    end;

    end.



    Если объяснить более просто, то нажимая кнопки в ListBox1 я обрабатываю его KeyDown, а затем возбуждаю KeyDown формы, ну или другого любого объекта.
  • Pavia © (01.03.18 11:13) [1]
    FormKeyDown(Sender, Key, Shift);
  • Sha © (01.03.18 11:48) [2]
    > kashey ©   (01.03.18 10:29)  

    Лучше так не делать.

    Правильнее вынести общий код в отдельную процедуру и вызывать ее откуда хочешь.
 
Конференция "Начинающим" » Делегировать событие другому обработчику
Есть новые Нет новых   [118230   +17][b:0][p:0.001]