Главная страница
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.046 c
15-1175114591
ProgRAMmer Dimonych
2007-03-29 00:43
2007.04.22
Посоветуйте, как перевести...


15-1175157168
DVM
2007-03-29 12:32
2007.04.22
Убрать dll внутрь exe


9-1147893805
Vitec
2006-05-17 23:23
2007.04.22
Какой движок лучше?


15-1174932331
Eraser
2007-03-26 22:05
2007.04.22
Шрифт Anastasia Script


3-1169113309
dest81
2007-01-18 12:41
2007.04.22
Firebird и интернет