Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Неработает обработчик нажатия кнопки

3.2K
28 октября 2007 года
nikipelovav
152 / / 12.04.2006
Всем привет.

Вот такая ситуация:

В сетке таблицы при наведении курсора мыши в поле выделенной ячейки
в правой части ячейки отображаются две кнопки. При других условиях кнопки скрыты.

Проблема:

Обработчик нажатия на кнопку не выполняется !?

Наводящий вопрос:

Влияет ли на выполнение обработчика нажатия - кто является "владельцем" объекта.

Почему спрашиваю - результат эксперемента:

Обработчик Не работает если владелец (Parent) - сетка таблицы TDBGrid.
Обработчик ЗАРАБОТАЛ, когда поменял владельца на окно TScrollBox,
которое является "владельцем" сетки таблицы.

Как объяснить такую ситуацию?

Что делать, ведь удобней позиционировать кнопки если "владелец" - DBGrid.

Фрагмент кода:
Код:
// окно главной сетки таблиц - в BC6 - красиво выглядит Flat рамка
pBoxMainGrid              = new TScrollBox(WindowMain);
pBoxMainGrid->Parent      = PanelTable;
pBoxMainGrid->Align       = alClient   ;
pBoxMainGrid->AutoSize    = false      ;
pBoxMainGrid->BevelWidth  = 2          ;

// сетка таблицы
DBGMain                   = new TDBGrid(WindowMain);
DBGMain->Parent           = pBoxMainGrid;
DBGMain->Align            = alClient    ;
DBGMain->BorderStyle      = bsNone      ;
DBGMain->DefaultDrawing   = false       ;
DBGMain->OnDrawColumnCell = DBGMainDrawCell ;
DBGMain->OnMouseMove      = DBGMainMouseMove;

TButton*  BtnTecDoc       = new TButton(WindowMain);
BtnTecDoc->Parent         = DBGMain               ;  // pBoxMainGrid;
BtnTecDoc->Caption        = "T"                   ;
BtnTecDoc->OnClick        = BtnTecDocClick;

void __fastcall BWindowMB2::BtnTecDocClick (TObject *Sender)
{
  ...
}
246
29 октября 2007 года
GIZMO
1.8K / / 30.07.2004
Цитата: nikipelovav

Обработчик Не работает если владелец (Parent) - сетка таблицы TDBGrid.
Обработчик ЗАРАБОТАЛ, когда поменял владельца на окно TScrollBox,
которое является "владельцем" сетки таблицы.


Давайте определимся:
Parent не владелец в контексте VCL (не путайте с оконным владением "по-понятиям" Windows),
в контексте VCL - владелец (Owner) тот кто управляет временем жизни объекта (обсуждалось много раз...)

Цитата: nikipelovav

Что делать


обычно рисуют кнопки, либо создают составной компонент (не Ваш случай)

Цитата: nikipelovav

 
Код:
// окно главной сетки таблиц - в BC6 - красиво выглядит Flat рамка


и что ScrollBox только для этого? А почему не взять Панель?

3.2K
29 октября 2007 года
nikipelovav
152 / / 12.04.2006
По поводу "Parent не владелец в контексте VCL" - не спорю.
Главное - Вы поняли в чём проблема.

Мне интересно узнать почему "эта ситуация имеет место быть" ?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог