Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Блокирование закладок TPageControl

Delphi , Компоненты и Классы , Вкладки и Страницы

Блокирование закладок TPageControl

Code:

unit GSPageControl;
 
interface
 
uses
Windows, Messages, Types, SysUtils, Classes, Controls, ComCtrls, CommCtrl;
 
type
TGSPageControl = class(TPageControl)
private
   FNewPageIndex, FNotifyIndex: Integer;
   FTab:boolean;
protected
   function GetTabFromCursor: Integer;
   function CanChange: Boolean; override;
   procedure WMKeyDown(var Message: TWMKey); message WM_KEYDOWN;
   procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY;
public
   property NewPageIndex: Integer read FNewPageIndex;
   constructor Create(AOwner: TComponent); override;
end;
 
procedure Register;
 
implementation
 
procedure Register;
begin
RegisterComponents('Samples', [TGSPageControl]);
end;
 
{ TGSPageControl }
 
function TGSPageControl.CanChange: Boolean;
begin
if fTab then FNewPageIndex:=FNotifyIndex else
FNewPageIndex := GetTabFromCursor;
if FNewPageIndex = -1 then
   FNewPageIndex := FNotifyIndex;
Result := inherited CanChange;
FNewPageIndex := -1;
fTab:=false;
end;
 
procedure TGSPageControl.CMDialogKey(var Message: TCMDialogKey);
begin
fTab:=true;
if (Focused or Windows.IsChild(Handle, Windows.GetFocus)) and
   (Message.CharCode = VK_TAB) and (GetKeyState(VK_CONTROL) < 0) then
   FNotifyIndex := FindNextPage(ActivePage, True, False).TabIndex;
inherited;
end;
 
constructor TGSPageControl.Create(AOwner: TComponent);
begin
inherited;
FNotifyIndex := 0;
FNewPageIndex := 0;
FTab:=false;
end;
 
function TGSPageControl.GetTabFromCursor: Integer;
var
HitTestInfo: TTCHitTestInfo;
P: TPoint;
begin
GetCursorPos(P);
HitTestInfo.pt := Self.ScreenToClient(P);
HitTestInfo.flags := TCHT_ONITEM;
Result := SendMessage(Self.Handle, TCM_HITTEST, 0, Integer(@HitTestInfo));
end;
 
procedure TGSPageControl.WMKeyDown(var Message: TWMKey);
begin
with Message do
   case Message.CharCode of
     37: FNotifyIndex := FindNextPage(ActivePage, False, False).TabIndex;
     39: FNotifyIndex := FindNextPage(ActivePage, True, False).TabIndex;
   end;
inherited;
end;
 
end.

Использование:

Code:

procedure TForm1.GSPageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
begin
AllowChange:=GSPageControl1.Pages[GSPageControl1.NewPageIndex].Enabled
end;

Авторы: Rouse_, Krid

Взято из http://forum.sources.ru

Статья Блокирование закладок TPageControl раздела Компоненты и Классы Вкладки и Страницы может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Вкладки и Страницы ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
24.04.2024 12:53:34/0.00089597702026367/0