Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.02;
Скачать: CL | DM;

Вниз

Вопрос по Hint у   Найти похожие ветки 

 
[BAD]Angel ©   (2002-08-22 13:45) [0]

Мастера, помогите!
Как можно сделать собственный ХИНТ, например в виде облачка?
Желательно куском кода!
Заранее спасибо!!!


 
[BAD]Angel ©   (2002-08-22 14:24) [1]

Ну не ужели никто не знает? :-(


 
BF7ru ©   (2002-08-22 14:24) [2]

А как ты думаешь, что такое хинт?
Это же просто ма-а-аленькое окошко (или не очень).
Так что просто создавай окно, отображай его:
1. Отлавливаешь Application.OnHint;
2. Определяешь по Sender кто хочет подсказку показать;
3. Создаешь окошко с нужным текстом.
Вроде все.
А насчет облачка - тут много вопросов, а особенно ответов, как создать нестандартное окно.


 
[BAD]Angel ©   (2002-08-22 14:39) [3]

А как окно создать то? Чейто не получается :(


 
Гас   (2002-08-22 14:56) [4]

Поищи на Torry уже написанные компоненты и посмотри как там все делается..


 
NickBat ©   (2002-08-22 15:07) [5]

Вот кусок кода для получения окна подсказки со стрелкой, если что непонятно пиши на мыло.

procedure MyHintShow(Text: String);
var
MyRct: TRect;
rgn,rgn1,rgn2: HRGN;
ar: array[1..6] of TPoint;
SDX, SDY, FX, FY,t: integer;
begin
MyHintHide;
HintExists:=True;
MyHint:=THintWindow.Create(self);
MyHint.Color:=clMyHint;
//дальнше идут вычисления координат где появится окно
SDX:=80;
SDY:=25;
FX:=Left+(Cross.CoorY-1)*CellSize+Sdvig.X-SDX;
MyRct:=MyHint.CalcHintRect(Screen.Width,Cross.Hint,nil);
t:=(MyRct.Right-MyRct.Left)-(Screen.Width-FX);
if (t>=-20)
then
begin
SDX:=SDX+t+20;
FX:=Left+(Cross.CoorY-1)*CellSize+Sdvig.X-SDX;
end;

MyRct.Right:=MyRct.Right+5;
Myrct.Bottom:=Myrct.Bottom+5;
t:=MyRct.Bottom-MyRct.Top;
FY := Top+GetSystemMetrics(SM_CYCAPTION)
+CoolBar.Height+(Sdvig.Y-CoolBar.Height)
+(Cross.CoorX-1)*CellSize
-t-SDY;
ar[1].x:=SDX;
ar[1].y:=MyRct.Bottom+SDY;
ar[2].x:=SDX-25;
ar[2].y:=MyRct.Bottom-1;
ar[3].x:=SDX-10;
ar[3].y:=MyRct.Bottom-1;

//а здесь создается сам регион для окна
rgn:=CreateRectRgn(0,0,10,10);
rgn1:=CreateRoundRectRgn(MyRct.Left,MyRct.Top,MyRct.Right,Myrct.Bottom,15,15);
rgn2:=CreatePolygonRGN(ar,3,ALTERNATE);
CombineRgn(rgn,rgn1,rgn2,RGN_OR);
MyRct.Top:=MyRct.Top+FY;
MyRct.Left:=MyRct.Left+FX;
MyRct.Bottom:=MyRct.Bottom+FY+SDY+5;
MyRct.Right:=MyRct.Right+FX+15;
SetWindowRgn(MyHint.Handle,rgn,True);
MyHint.ActivateHint(MyRct,Cross.Hint);
DeleteObject(rgn);
DeleteObject(rgn1);
DeleteObject(rgn2);
end;

procedure MyHintHide;
begin
if HintExists
then begin
HintExists:=False;
MyHint.ReleaseHandle;
MyHint.Free;
end;
end;



Страницы: 1 вся ветка

Текущий архив: 2002.09.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
1-3343
alex_x
2002-08-21 18:14
2002.09.02
Дата Project Build


3-3305
bobr12
2002-08-13 13:22
2002.09.02
Как удалить генратор в InterBase


8-3532
MagG0T
2002-04-13 18:27
2002.09.02
Столкновение спрайтов


14-3592
msalex
2002-08-03 20:24
2002.09.02
декомпилтор Delphi?


1-3335
lenin
2002-08-21 13:51
2002.09.02
NMSMTP