Долго искал в интернете как сделать, что TabSheet в PageControl был серый и на него нельзя было нажать.
1. Как предотвратить нажатие на "Enabled" TavSheet.
Наиболее часто встречающейся вариант.
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=29256:
В событие OnChanging запоминаем активную вкладку.
В событие OnChanging проверяем не Enabled ли вкладка и возвращаемся на активную. Однако в таком случае происходит мерцание.
Ищем другой вариант
Все оказалось достаточно просто on_page_control_mouse_activate : дает возможность узнать где курсор мыши.
А TPageControl позволяет узнать прямоугольничек каждого таба.
Осталось сравнить и запретить allowChange
===
Глобальная переменная bool tab_allow = true;
//--------------------------------------
-------------------------------------
void __fastcall Tig_prognose_panel::on_page_control_chan
ging(TObject *Sender,
bool &AllowChange)
{
AllowChange = tab_allow;
}
//--------------------------------------
-------------------------------------
void __fastcall Tig_prognose_panel::on_page_control_mous
e_activate(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y, int HitTest,
TMouseActivate &MouseActivate)
{
tab_allow = true;
for (int i = 0;i
[
Error: Irreparable invalid markup ('<this->') in entry. Owner must fix manually. Raw contents below.]
Долго искал в интернете как сделать, что TabSheet в PageControl был серый и на него нельзя было нажать.
1. Как предотвратить нажатие на "Enabled" TavSheet.
Наиболее часто встречающейся вариант.
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=29256:
В событие OnChanging запоминаем активную вкладку.
В событие OnChanging проверяем не Enabled ли вкладка и возвращаемся на активную. Однако в таком случае происходит мерцание.
Ищем другой вариант
Все оказалось достаточно просто on_page_control_mouse_activate : дает возможность узнать где курсор мыши.
А TPageControl позволяет узнать прямоугольничек каждого таба.
Осталось сравнить и запретить allowChange
===
Глобальная переменная bool tab_allow = true;
//---------------------------------------------------------------------------
void __fastcall Tig_prognose_panel::on_page_control_changing(TObject *Sender,
bool &AllowChange)
{
AllowChange = tab_allow;
}
//---------------------------------------------------------------------------
void __fastcall Tig_prognose_panel::on_page_control_mouse_activate(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y, int HitTest,
TMouseActivate &MouseActivate)
{
tab_allow = true;
for (int i = 0;i<this->f_page_control->PageCount;i++)
{
if (this->f_page_control->Pages[i]->Enabled == false)
{
TRect r = this->f_page_control->TabRect(i);
bool test = ((r.top<y)&&(r.bottom>Y)&&(r.Left<x)&&(r.right>X));
if (test == true) tab_allow = false;
}
}
}
//---------------------------------------------------------------------------