ykk |
Отправлено: 20.04.2005, 12:29 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 17
|
Ребята подскажите как сделать, чтобы при наведении мышки на какой то элемент (кнопка и т.д.) выскакивало всплывающее окошко типа Hint, только покруче какое то (но не отдельная форма).
Может компонента какая то есть. Подскажите плиз!
Заранее спасибо. |
|
Sl@Sh |
Отправлено: 20.04.2005, 15:49 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
Компонент glHint из набора Globus Lib. На этом сайте в загрузках кажется есть.
|
|
Rius |
Отправлено: 21.04.2005, 08:07 |
|
Мастер участка
Группа: Участник
Сообщений: 321
|
Вот пример (паскаль), подключаешь к проекту и все.
CODE | unit HintX;
//-----------------------------------------------------------------------------
interface
uses
Windows, Messages, Controls, Graphics, Classes;
type
THintX = class(THintWindow)
protected
procedure Paint; override;
public
procedure ActivateHint(Rect: TRect; const AHint: AnsiString); override;
function CalcHintRect(MaxWidth: Integer; const AHint: string;
AData: Pointer): TRect; override;
end;
//-----------------------------------------------------------------------------
implementation
uses Forms;
{ TIconHintX }
//-----------------------------------------------------------------------------
{-Вычисляем новый размер окошка подсказки для помещения в него иконки:-}
function THintX.CalcHintRect(MaxWidth: Integer;
const AHint: string; AData: Pointer): TRect;
begin
Result := inherited CalcHintRect(MaxWidth, AHint, AData);
Result.Right := (Canvas.TextWidth(AHint) + 10);
Result.Bottom := Canvas.TextHeight('М') * 2 + 10;
// MessageBeep(MB_OK);
end;
//-----------------------------------------------------------------------------
procedure THintX.Paint;
const
MARGIN = 5;
var
Rect: TRect;
Styles: TFontStyles;
begin
// inherited;
Include (Styles, fsBold);
Canvas.Font.Style := Styles;
Rect.Left := 2;
Rect.Top := 2;
Rect.Right := Width — 2;
Rect.Bottom := Canvas.TextHeight('М') + 2;
Canvas.TextRect(Rect, Rect.Left+2, Rect.Top, 'Подсказка');
Canvas.Pen.Color := clSkyBlue;
Canvas.MoveTo(2, Rect.Bottom+2);
Canvas.LineTo(Canvas.TextWidth('Подсказка') + 7, Rect.Bottom+2);
Canvas.LineTo(Canvas.TextWidth('Подсказка') + 7, 2);
Exclude (Styles, fsBold);
Canvas.Font.Style := Styles;
Rect.Top := Rect.Bottom + 2;
Rect.Bottom := Height — 2;
Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, Caption);
Canvas.Pen.Color := 12626353;
// Canvas.RoundRect(0,0,Width-2,Height-2,15,15);
Canvas.Rectangle(0,0,Width-2,Height-2);
// Canvas.Draw(MARGIN, MARGIN * 5, Application.Icon);
//рисуем рамку окошка подсказки
// SendMessage(Handle, WM_NCPAINT, 0, 0);
end;
//-----------------------------------------------------------------------------
procedure THintX.ActivateHint(Rect: TRect; const AHint: AnsiString);
var
regn1: HRGN;
begin
inherited;
// regn1 := CreateRoundRectRgn(0,0,Width,Height,15,15);
// SetWindowRgn(Self.Handle,regn1,true);
end;
//-----------------------------------------------------------------------------
initialization
//связываем наш новый класс с классом окошка
//подсказки установленным поумолчанию:
HintWindowClass := THintX;
end. |
|
|
|