Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
6th
Ноя
PageControl как получить индекс при переключении разными способами
Posted by Chas under Delphi
Как в событие OnChanging можно получить индекс на странницу на которую хочешь переключиться.
Аватар
Добавил обработку других возможностей перехода (если не упустил еще чего нибудь). В OnChanging индекс страницы, на которую переход — в NewIndexTab
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;
type
TPageControl = class(ComCtrls.TPageControl)
private
lNewIndexTab: Integer;
procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR;
procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY;
procedure CNKeyDown(var Message: TWMKeyDown); message CN_KEYDOWN;
procedure WMMouseActivate(var Message: TWMMouseActivate); message WM_MOUSEACTIVATE;
public
property NewIndexTab: Integer read lNewIndexTab;
end;
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
Memo: TMemo;
procedure PageControl1Changing(Sender: TObject; var AllowChange: Boolean);
procedure PageControl1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{TPageControl}
procedure TPageControl.CMDialogChar(var Message: TCMDialogChar);
{Переход по горячей клавише}
var i: Integer;
begin
for i:=0 to PageCount-1 do
if IsAccel(Message.CharCode,Tabs) and CanShowTab(I) and CanFocus then begin
lNewIndexTab:=i;
Break;
end;
inherited;
end;
procedure TPageControl.CMDialogKey(var Message: TCMDialogKey);
{Переход по Ctrl-Tab}
var Page: TTabSheet;
begin
if (Focused or Windows.IsChild(Handle,Windows.GetFocus)) and
(Message.CharCode=VK_TAB) and
(GetKeyState(VK_CONTROL)<0) then begin
Page:=FindNextPage(ActivePage,GetKeyState(VK_SHIFT)>=0,True);
if (Page<>nil) and (Page<>ActivePage) then lNewIndexTab:=Page.TabIndex;
end;
inherited;
end;
procedure TPageControl.CNKeyDown(var Message: TWMKeyDown);
{Переход клавишами Влево, Вправо}
var Page: TTabSheet;
begin
if (Message.CharCode=VK_LEFT) or (Message.CharCode=VK_RIGHT) then begin
Page:=FindNextPage(ActivePage,Message.CharCode=VK_RIGHT,True);
if (Page<>nil) and (Page<>ActivePage) then lNewIndexTab:=Page.TabIndex;
end;
inherited;
end;
procedure TPageControl.WMMouseActivate(var Message: TWMMouseActivate);
{Переход мышью}
var xPos: TPoint;
begin
inherited;
xPos:=ScreenToClient(Mouse.CursorPos);
lNewIndexTab:=IndexOfTabAt(xPos.X,xPos.Y)
end;
{TForm1}
procedure TForm1.PageControl1Changing(Sender: TObject; var AllowChange: Boolean);
begin
if (PageControl1.NewIndexTab>=0) and
(PageControl1.NewIndexTab
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)