Also so wie du den Hint erzeugst dann gehört er dem
FCL - Formular. Wenn jetzt der Hint über den Rand des Fensters geht wird der dort abgeschnitten.
Ich habe foldenden Code:
Delphi-Quellcode:
HintParentForm := GetParentForm(Self);
GetCursorPos(FormPos);
if fHintWindow = nil then
begin
if HintParentForm <> nil then
fHintWindow := THintWindow.Create(HintParentForm)
else
fHintWindow := THintWindow.CreateParented(Self.ParentWindow);
end;
fHintWindow.ParentWindow := GetDesktopWindow;
iItemLength := Canvas.TextWidth(fItems.Strings[fMouseMovedItem]) + 10;
iItemHeight := Canvas.TextHeight('100') + 2;
HintRect := Rect(FormPos.x,FormPos.y,FormPos.x+iItemLength,
FormPos.y+iItemHeight);
fHintWindow.ActivateHint(HintRect,fItems.Strings[fMouseMovedItem]);
Das Hintwindow soll aus innerhalb einer Componente angezeigt werden.
In Delphi5 hat dieser Code exakt das gewünschte Hint - Window zum vorschein gebracht. Wenn ich jetzt exakt diesen Code von Delphi 7 oder 2005 ausführen lasse, blitzt das Hint kurz auf und der Form bekommt den Focus entzogen und nach etwa 5 - 10 Sekunden automatisch wieder zugewiesen.
Lasse ich das "ActivateHint" weg und setze die "Width" und "Height" Eigenschaften dann wird der Hint wieder dauernd angezeigt.
Tja drum hab ich halt gedacht ob da was anders geworden ist, das das "ActivateHint" nicht mehr notwendig ist.