// окно главной сетки таблиц - в 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)
{
...
}
Неработает обработчик нажатия кнопки
Вот такая ситуация:
В сетке таблицы при наведении курсора мыши в поле выделенной ячейки
в правой части ячейки отображаются две кнопки. При других условиях кнопки скрыты.
Проблема:
Обработчик нажатия на кнопку не выполняется !?
Наводящий вопрос:
Влияет ли на выполнение обработчика нажатия - кто является "владельцем" объекта.
Почему спрашиваю - результат эксперемента:
Обработчик Не работает если владелец (Parent) - сетка таблицы TDBGrid.
Обработчик ЗАРАБОТАЛ, когда поменял владельца на окно TScrollBox,
которое является "владельцем" сетки таблицы.
Как объяснить такую ситуацию?
Что делать, ведь удобней позиционировать кнопки если "владелец" - DBGrid.
Фрагмент кода:
Код:
Цитата: nikipelovav
Обработчик Не работает если владелец (Parent) - сетка таблицы TDBGrid.
Обработчик ЗАРАБОТАЛ, когда поменял владельца на окно TScrollBox,
которое является "владельцем" сетки таблицы.
Давайте определимся:
Parent не владелец в контексте VCL (не путайте с оконным владением "по-понятиям" Windows),
в контексте VCL - владелец (Owner) тот кто управляет временем жизни объекта (обсуждалось много раз...)
Цитата: nikipelovav
Что делать
обычно рисуют кнопки, либо создают составной компонент (не Ваш случай)
Цитата: nikipelovav
Код:
// окно главной сетки таблиц - в BC6 - красиво выглядит Flat рамка
и что ScrollBox только для этого? А почему не взять Панель?
Главное - Вы поняли в чём проблема.
Мне интересно узнать почему "эта ситуация имеет место быть" ?