![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
PopupMenu [D6, D7, WinXP]
Handle © (2006-11-17 11:49:00)Делаю собственную орисовку PopupMenu, возможно ли определить координаты ARect.Left глобально, то есть относительно экрана?
procedure TForm1.AdvancedDrawItems(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; State: TOwnerDrawState);
var
PTextRect: TRect;
begin
ARect.Left:= 20;
ACanvas.FillRect(ARect);
if odSelected in State then
begin
ACanvas.Pen.Color:= clHighlight;
ACanvas.Brush.Color:= clHighlight;
ACanvas.Rectangle(ARect);
// ShowToolTipHint( );
end else
begin
ACanvas.Font.Color:= clWhite;
end;
PTextRect:= Rect(ARect.Left + 3, ARect.Top + 2, ARect.Right - 22, ARect.Bottom);
DrawText(ACanvas.Handle,PChar((Sender as TMenuItem).Caption),
Length((Sender as TMenuItem).Caption), PTextRect, DT_LEFT);
ImageList1.Draw(ACanvas, 1, ARect.Top + 2,(Sender as TMenuItem).ImageIndex, true);
end;
Handle (2006-11-17 13:27:00) [1]
> clickmaker © (17.11.06 12:42) [5]
Спасибо
clickmaker (2006-11-17 12:42:00) [2]ну так, если пункт стал выделенным, значит, он уже на экране... Разве не получается взять его Rect, ClientToScreen его и показать хинт?
Handle (2006-11-17 12:39:00) [3]cl
> ickmaker © (17.11.06 12:32) [3]
Проблема собственно может показаться глупой, хочется показывать хинты используя TOOLTIPS_CLASS, сейчас делаю
if odSelected in State then
ShowToolTipHint(Mouse.CursorPos);
но чего то мне это не очень нравиться, хочу позиционировать относительно ARect.
clickmaker (2006-11-17 12:32:00) [4]
> [2] Handle © (17.11.06 12:15)
а в чем проблема, собственно?
Handle (2006-11-17 12:15:00) [5]
> clickmaker © (17.11.06 12:05) [1]
А как насчет SubItems или если общая высота всех пунктов больше Screen.Height?
clickmaker (2006-11-17 12:05:00) [6]ClientToScreen()