![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Код:
procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbRight then
begin
Form2.Left := X;
Form2.Top := Y;
Form2.ShowModal;
end;
end;Что необходимо добавить чтоб модальная форма появилась именно там где был сделан клик? Сейчас оно всплывает как-то не там... |
|
#2
|
||||
|
||||
|
Цитата:
Код:
...
Form2.Left := X + Left;
Form2.Top := Y + Top;
... |
|
#3
|
||||
|
||||
|
Для этих целей функция Есть,
Код:
TComponent.ClientToScreen Есть ещё её антоним... Код:
ScreenToClient Зачем воровать, всё уже своровано до нас. (С) |
|
#4
|
||||
|
||||
|
Цитата:
Код:
procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var pt : TPoint; begin pt := PaintBox1.ClientToScreen(Point(X, Y)); Form2.Left := pt.X; Form2.Top := pt.Y; Form2.ShowModal; end; |
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Uniq! (05.04.2013)
| ||
|
#5
|
||||
|
||||
|
Ох ёпрст. А я голову ломал.
Функция пересчитывает внутренние координаты компонента в экранные А её антоним делает наоборот, экран перекидывает на компонент. Спасибо. Помогли. |