Подскажите такую вещь
unit ExGrids;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Grids, Types, Math,
Dialogs, Controls;
type TExGridCell = class;
TOnSelectEvent = procedure(Sender: TObject; ACol, ARow: integer) of object;
TExGridCell = class (TComponent)
private
FSelected: boolean;
FOnSelect: TOnSelectEvent;
procedure SetSelected(const Value: boolean);
protected
procedure DoSelect(ACol,ARow: integer); virtual;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property OnSelect: TOnSelectEvent read FOnSelect write FOnSelect;
property Selected: boolean read FSelected write SetSelected;
end;
type
TExGrid = class (TCustomGrid)
private
FCells: TList;
procedure SelectCell(Sender: TObject; ACol, ARow: integer);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure SelectCell(Sender: TObject; ACol, ARow: integer);
property Cells[ACol, ARow: Integer]: TExGridCell read GetCells write SetCells;
end;
implementation
constructor TExGrid.Create(AOwner: TComponent);
var i, Col, Row: integer;
m: TMethod;
begin
inherited Create(AOwner);
FCells:=TList.Create;
for i:=1 to RowCount*ColCount do
begin
FCells.Add(TExGridCell.Create(self));
Cells[Col,Row].OnSelect:=SelectCell;
end;
end;
destructor TExGrid.Destroy;
begin
inherited Destroy;
end;
class procedure TExGrid.SelectCell(Sender: TObject; ACol, ARow: integer);
begin
ShowMEssage('clicked on '+IntToStr(ACol)+'/'+IntToStr(ARow)) ;
end;
{ TExCell }
constructor TExGridCell.Create(AOwner: TComponent);
begin
inherited;
FSelected:=false;
FText:='';
FColor:=clWhite;
end;
destructor TExGridCell.Destroy;
begin
inherited;
end;
procedure TExGridCell.DoSelect(ACol, ARow: integer);
begin
if Assigned(FOnSelect) then OnSelect(Self) else ShowMessage('Not assigned');
end;
procedure TExGridCell.SetSelected(const Value: boolean);
begin
FSelected:=Value;
DoSelect(Col,Row)
end;
end.
Так вот в
if Assigned(FOnSelect) then OnSelect(Self) else ShowMessage('Not assigned');
Assigned(FOnSelect) возвращает false
Прочитал статьи которые выложены на сайте по теме событий и аналогичные вопросы, но так и не нашел причину такой вот неисправности в коде, подскажи с примера. заранее благодарен