пʼятниця, 26 лютого 2010 р.

Відображення Hint для вкладок PageControl

Для відображення вспливаючої підказки (Hint) при наведені на ім'я вкладки PageControl і їх зміні при переході від однієї вкладки до іншої потрібно описати подію PageControl MouseMove.

Код з коментарями:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls;

type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    TabSheet5: TTabSheet;
    procedure PageControl1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{Визначення параметрів для коректного відображення вспливаючих підказок}

procedure TForm1.FormCreate(Sender: TObject);
begin
// Видимість вспливаючих підсказок закладок встановлюється в true
PageControl1.ShowHint:=true;
// Призначається властивості PageControl Tag значення -1
PageControl1.Tag:=-1;
end;

{В події PageControl MouseMove реалізовується відображення своєї вспливаючої підказки для кожної вкладки}

procedure TForm1.PageControl1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var
  tabindex: Integer;
  PC: TPageControl;
begin
{Як правило Sender в Delphi - це елемент управління, який посилає повідомлення функції, в якій він фігурує}
  PC := Sender as TPageControl;
// визначення індексу вкладки за її координатами
  tabindex := PC.IndexOfTabAt(X, Y);
// в цій умовній конструкції відбувається присвоєння і зміна підказок для вкладок
   if ((tabindex >= 0) and (tabindex <> PC.Tag)) then
    begin
      PC.Tag := tabindex;
      Application.CancelHint;
// присвоєння підказки вкладці, в даному випадку присвоюється Caption вкладки
      PC.Hint := PC.Pages[tabindex].Caption;
// активація відображення підказки
      Application.ActivateHint(Point(X,Y));
    end;
end;

end.

Відображення вспливаючої підказки була реалізована при допомозі volvo877.

Немає коментарів:

Дописати коментар