Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Назначение обработчика события потомку класса


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


Наверх

Титульная страница Поиск, карта сайта Написать письмо