|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
ClientToScreen (onMouseDownClick)
Код:
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; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Uniq! (05.04.2013)
|
#5
|
||||
|
||||
Ох ёпрст. А я голову ломал.
Функция пересчитывает внутренние координаты компонента в экранные А её антоним делает наоборот, экран перекидывает на компонент. Спасибо. Помогли. |