Форум: "Основная";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];
ВнизВопрос по 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c