![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Назначение обработчика события потомку класса
TrainerOfDolphins © (2006-02-21 14:18:00)Уважаемые гуру :)!
Делаю так:
var SomeDBGrid:TDBGrid;
procedure TfmMain.FormCreate(Sender: TObject);
begin
TStringGrid(SomeDBGrid).OnSelectCell:=fmMain.dbgStudentsSelectCell;
<...>
end;
procedure TfmMain.SomeDBGridSelectCell(Sender: TObject; ACol,
ARow: LongInt; var Canselect: boolean);
begin
<действия>
end;
Желаемые действия при клике на дб-гриде выполняются, но сразу вслед за этим возникает
------------------------------------------
exception class EAccessViolation with message 'Access violation at address 00000000. Read of address 00000000'. Process stopped. Use Step or Run to continue.
---------------------------------------------
Подскажите, плиз, где я лезу не в ту область памяти?
TrainerOfDolphins (2006-02-21 14:52:00) [1]И прикол в том, что работает, всё выполняет. И только при выходе из обработчика возникает ошибка...
umbra (2006-02-21 14:40:00) [2]потому что у TDBGrid и TStringGrid общий предок -
TCustomGrid. Но в принципе так извращаться не стоит. Если нужны какие-то свойства предка, не опубликованные в потомке, лучше написать потомка от потомка. :)
TrainerOfDolphins (2006-02-21 14:31:00) [3]Упс. :)
Смотрю - и точно.
А почему тогда канает это:
k:=TStringGrid(SomeDBGrid).Row;
?
КаПиБаРа (2006-02-21 14:31:00) [4]McSimm © (21.02.06 14:26) [5]
Не заметил где и когда был создан SomeDBGrid
McSimm (2006-02-21 14:26:00) [5]Эксемпляр-то создан, в Design-Time
Только экземпляр олного класса, а попытка работать - с другим.
КаПиБаРа (2006-02-21 14:25:00) [6]Сначала нужно создать экземпляр класса, а потом с ним работать.
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=342
McSimm (2006-02-21 14:23:00) [7]
> TStringGrid(SomeDBGrid)
Но это же обман. Раз обработчик спрятан, значит что-то в потомке изменено таким образом, что назначать обработчик нельзя. Логично ?
umbra (2006-02-21 14:22:00) [8]
TDBGridне является потомкомTStringGrid
umbra (2006-02-21 14:20:00) [9]вот здесь
TStringGrid(SomeDBGrid).OnSelectCell