PageControl, TabControl, Notebook, TabSet
Code: |
function Form1.ItemAtPos(TabControlHandle : HWND; X, Y : Integer) : Integer; var HitTestInfo : TTCHitTestInfo; HitIndex : Integer; begin HitTestInfo.pt.x := X; HitTestInfo.pt.y := Y; HitTestInfo.flags := 0; HitIndex := SendMessage(TabControlHandle, TCM_HITTEST, 0, Longint(@HitTestInfo)); Result := HitIndex; end; |
- Подробности
- Родительская категория: VCL
- Категория: PageControl, TabControl, Notebook, TabSet
Есть ли возможность в компоненте Tabbednotebook сделать какую-либо страницу недоступной? То есть не позволять пользователю щелкать на ней и видеть ее содержимое?
Да, такая возможность существует. Самый простой путь - удалить страницу, например так:
Code: |
with TabbedNotebook do Pages.Delete(PageIndex); |
- Подробности
- Родительская категория: VCL
- Категория: PageControl, TabControl, Notebook, TabSet
Вы могли бы получить тот же эффект, устанавливая элементы управления на панели или в другом контейнере, который не является дочерним по отношению к Notebook, но находится наверху. Поскольку элементы не являются дочерними по отношению к страницам, то их никак не затронет изменение страниц, и вы можете управлять ими из кода. Видимость же такова, что кажется, что каждая страница компонента содержит тот же самый набор компонентов.
Что делаю я -- располагаю разделяемые элементы управления на форме, а не на конкретной странице TTabbedNotebook. Для того, чтобы сделать это, вам необходимо установить свойство TTabbedNotebook Align на что-то другое, отличное от alClient -- например, если разделяемые элементы управления расположены в нижней части формы, используйте для TTabbedNotebook значение alTop, и отодвиньте нижнюю границу чуть повыше, чтобы в образовавшейся области без труда разместились бы разделяемые элементы управления.
- Подробности
- Родительская категория: VCL
- Категория: PageControl, TabControl, Notebook, TabSet
Разместите компоненты Tabset(TabSet1) и Edit (Edit1) на вашей форме. Измените свойство компонента Tabset Tabs для размещения в списке строк следующих четерых закладок:
Hello
World
Of
Delphi
Создайте обработчик события onChange компонента Edit1 как показано ниже:
- Подробности
- Родительская категория: VCL
- Категория: PageControl, TabControl, Notebook, TabSet
Что-то аналогичное я делал раньше, тем не менее, вместо Listbox я использовал dbGrid со следующими опциями:
[dgAlwaysShowEditor,dgTabs,dgRowSelect,dgAlwaysShowSelection,dgConfirmDelete, dgCancelOnExit]
Кроме того, я привел код, который я использовал в ответ на щелчок на закладке, таким образом изменяя запись в dbgrid.
- Подробности
- Родительская категория: VCL
- Категория: PageControl, TabControl, Notebook, TabSet
Автор: Mike Scott
Проблема с использованием ресурсов в компоненте Notebook? Вы можете обойти это, освобождая дескрипторы окон невидимых страниц компонента. Следующий код поясняет как это можно сделать - я создал обработчик события компонента OnClick, освобождающий дескрипторы невидимых страниц при каждом изменении видимой страницы:
- Подробности
- Родительская категория: VCL
- Категория: PageControl, TabControl, Notebook, TabSet
Code: |
type TForm1 = class(TForm) private procedure CMDialogKey(var msg: TCMDialogKey); message CM_DIALOGKEY; end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.CMDialogKey(var msg: TCMDialogKey); begin if msg.Charcode <> VK_TAB then inherited; end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_TAB then Form1.Caption := 'Tab Key Down!'; end;
|
- Подробности
- Родительская категория: VCL
- Категория: PageControl, TabControl, Notebook, TabSet
Страница 2 из 2