Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.057 c
15-1175082295
0leg
2007-03-28 15:44
2007.04.22
Функция замены специальных HTML символов


15-1175084101
homm
2007-03-28 16:15
2007.04.22
Зачем жескому диску кэш?


15-1175089945
oldman
2007-03-28 17:52
2007.04.22
Есть многое на свете, друг Горацио...


15-1174864148
Джо
2007-03-26 03:09
2007.04.22
Потоп


2-1175715209
Чаййник
2007-04-04 23:33
2007.04.22
запус по времени





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский