Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.22;
Скачать: CL | DM;

Вниз

Нормальный Enable TPageControl   Найти похожие ветки 

 
Kolan ©   (2007-02-22 14:14) [0]

Елси у страницы сделать Enable := False; , то её попрежнему можно открыть, но нельзя на ней ничего делать.

Как сделать так(другое свойство?) чтобы пир Enable = False "корешек" страницы становился бы серым и открыть страницу было бы нельзя. Так собственно и поступают другие контролы, например TButton


 
Германн ©   (2007-02-22 14:28) [1]

Обрабатывай OnChanging и ставь AllowChange:=False если нужно. Вот только "серости" не получится :(


 
Германн ©   (2007-02-22 14:55) [2]


> Германн ©   (22.02.07 14:28) [1]

Пардон, обманул. Так не получится :(


 
Kolan ©   (2007-02-22 16:17) [3]


> Обрабатывай OnChanging и ставь AllowChange:=False если нужно.
>  Вот только "серости" не получится :(

Ну ясно видимо лучьше просто скрывать, так как при Enable = False бывает по закладке шаришься не можешь понять в чем дело, а потом доходит что она отключена.. Так это я, а что бедный пользовать бкдкт делать:(


 
Германн ©   (2007-02-22 16:37) [4]

Меня подвел склероз. В старом добром TTabbedNotebook такое можно было сделать.


 
guav ©   (2007-02-23 16:13) [5]

серость нарисовать можно, а некликабельность сложнее, наверное только обработокй всех способов переключения.


 
Kolan ©   (2007-02-23 23:45) [6]

«[5] guav ©   (23.02.07 16:13)
серость нарисовать можно, а некликабельность сложнее, наверное
только обработокй всех способов переключения.»

Да вот в справке да же пишут:
Note:
When using one of the page controls, if you want to restrict a user from switching to a tab, you cannot set TTabSheet.Enabled to false to accomplish that restriction. Instead, use the OnChanging event to prevent the user from selecting a tab.



 
Германн ©   (2007-02-24 00:52) [7]


> Instead, use the OnChanging event to prevent the user from
> selecting a tab.

Но в то же время пишут:
Use an OnChanging event handler to prevent the user from leaving a tab setting until certain conditions have been met. Т.е. при OnChanging известна закладка из которой уходим, а закладка в которую уходим неизвестна!
А вот в TTabbedNotebook событие OnChange такое:
type TPageChangeEvent = procedure(Sender: TObject; NewTab: Integer; var AllowChange: Boolean) of object;

Т.е. в этом событии мы знаем и "откуда"-ActivePage и "куда"-NewTab и можем при этом запретить переход.


 
RASkov   (2007-02-24 02:33) [8]

Вот как вариант, не очень аккуратно, но...
В этом примере у PageControlа - табов должно быть более 4х.
 private
   DisablePages: set of Byte;
......
procedure TForm1.FormCreate(Sender: TObject);
begin
 PageControl1.OwnerDraw:=True;
 DisablePages:=[0,3];
end;

procedure TForm1.PageControl1Changing(Sender: TObject; var AllowChange: Boolean);
begin
 AllowChange:=not(PageControl1.Tag in DisablePages);
end;

procedure TForm1.PageControl1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
 PageControl1.Tag:=PageControl1.IndexOfTabAt(X, Y);
end;

procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
 if TabIndex in DisablePages then PageControl1.Canvas.Font.Color:=clGrayText else PageControl1.Canvas.Font.Color:=clBlack;
 PageControl1.Canvas.TextOut(Rect.Left+4,Rect.Top+4, PageControl1.Pages[TabIndex].Caption);
end;

Есть недочет: с клавиатуры можно выбрать "задисабленные" табы.



Страницы: 1 вся ветка

Текущий архив: 2007.04.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
2-1175667350
Steep
2007-04-04 10:15
2007.04.22
Скроллер на панели


5-1152100632
Romas81
2006-07-05 15:57
2007.04.22
компоненты MSSQL 2000


3-1170409106
Монг
2007-02-02 12:38
2007.04.22
Не удаляеться строчка


15-1175187179
eXPell
2007-03-29 20:52
2007.04.22
Stack-overflow....


1-1172247555
TStas
2007-02-23 19:19
2007.04.22
Как же все-таки наследовать от формы?