Форум: "Основная";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];
ВнизНормальный 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c