powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Координаты поля в ДВ
10 сообщений из 10, страница 1 из 1
Координаты поля в ДВ
    #32684786
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В ДВ (tabular) есть поле ввода с стилем редактирования DropDownDW (например).
Надо вместо ДДВ показать treeview. С соотв. событием разобрался - ДДВ не показывается. Теперь на месте ДДВ надо красиво отобразить treeview.
Как узнать координаты для отображения ?
...
Рейтинг: 0 / 0
Координаты поля в ДВ
    #32684826
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJBКак узнать координаты для отображения ?
Путем рассчетов ;-) Вам известны координаты окна, координаты dw? Вы можете узнать координаты поля. А дальше считать и пробовать...
(ИМХО)
---
С уважением, IKAR

ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
Координаты поля в ДВ
    #32685414
gal20
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если DW не ReadOnlySet = 'yes', и текущая колонка редактируема (edit, editmask), а при ddlb или dddw выпадающий список еще не появился, то
Windows focus находится в некоем окне, который открывает PB для редактирования. Его координаты - это то, что нужно !!!

Function ULong WGetFocus() Library 'user32.dll' Alias for "GetFocus" - handle окна, где фокус.

Function Int GetWindowRect( ULong hwn, REF Long lpRect[4]) Library 'user32.dll' -
координаты окна по handle.

Function Boolean ScreenToClient( ULong whndl, REF Long lpPoint[2]) Library "user32.dll" - преобразование координат для окна, где открыт dw control.

Я этим способом пользуюсь уже лет 8, про dddw давно забыл, а в качестве выпадающих списков использую обычно dw - никакого геморроя ;)
...
Рейтинг: 0 / 0
Координаты поля в ДВ
    #32685435
gal20
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gal20 а в качестве выпадающих списков использую обычно dw - никакого геморроя ;)

Sorry - в качестве выпадающих списков использую обычный DW control
...
Рейтинг: 0 / 0
Координаты поля в ДВ
    #32685783
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2gal20
А можно примерчик кода.
Плиииззз ...
...
Рейтинг: 0 / 0
Координаты поля в ДВ
    #32685835
gal20
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forward
global type uo_api from nonvisualobject
end type
end forward

global type uo_api from nonvisualobject autoinstantiate
end type

type prototypes
Function ULong WGetFocus() Library 'user32.dll' Alias for "GetFocus"
Function Boolean ScreenToClient( ULong whndl, REF Long lpPoint[2]) Library "user32.dll"
Function Int GetWindowRect( ULong hwn, REF Long lpRect[4]) Library 'user32.dll'


end prototypes

type variables
end variables

forward prototypes
end prototypes

on uo_api.create
call super::create
TriggerEvent( this, "constructor" )
end on

on uo_api.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on

//--------------- end uo_api --------


//--------------- определение координат поля ввода --------

Long point[2],EditRect[4];
GraphicObject go;

go = <окно, где находится dw control>

Api.GetWindowRect(Api.WGetFocus(),EditRect)
point[1] = EditRect[1] // x левого верхнего угла
point[2] = EditRect[2] // y левого верхнего угла
Api.ScreenToClient(Handle(go),point)
EditRect[1] = PixelsToUnits(point[1],XPixelsToUnits!)
EditRect[2] = PixelsToUnits(point[2],YPixelsToUnits!)
point[1] = EditRect[3] // x правого нижнего угла
point[2] = EditRect[4] // y правого нижнего угла
Api.ScreenToClient(Handle(go),point)
EditRect[3] = PixelsToUnits(point[1],XPixelsToUnits!)
EditRect[4] = PixelsToUnits(point[2],YPixelsToUnits!)

// в EditRect координаты поля ввода в системе координат окна, где находится dw control

Удачи
...
Рейтинг: 0 / 0
Координаты поля в ДВ
    #32686067
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо не изобретать велосипед, а посмотреть как в PFC dropdown calendar/calculator сделаны...
...
Рейтинг: 0 / 0
Координаты поля в ДВ
    #32686138
gal20
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппНадо не изобретать велосипед, а посмотреть как в PFC dropdown calendar/calculator сделаны...

Зато быстро и кода мало :)
...
Рейтинг: 0 / 0
Координаты поля в ДВ
    #32686140
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 gal20
Большое спасибо
...
Рейтинг: 0 / 0
Координаты поля в ДВ
    #32688073
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппНадо не изобретать велосипед, а посмотреть как в PFC dropdown calendar/calculator сделаны
Алгоритм применяемый в PFC, а конкретно в объекте pfc_n_cst_dropdown функция of_position предполагает что все строки в DataWindow видимы и имеют одинаковую высоту, что не всегда верно.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Координаты поля в ДВ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]