powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Mouse selection
25 сообщений из 25, страница 1 из 1
Mouse selection
    #33162257
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может кто подскажет лутшее решение проблемы:
Есть ДВ типа грид, во всех ячейках можно вводить данные.
так вот, при таких обстоятельствах "мouse selection" не работает.
я решил так:

на евенте clicked для ДВ написал:
string ls_protect
if KeyDown(KeyAlt!) then
ls_protect = describe( dwo.name+".protect")
modify(dwo.name+".protect=1")
post ufa_enable_dwoobject(dwo.name, ls_protect)
end if

соответственно функция ufa_enable_dwoobject(...)
this.modify(as_name + ".protect="+as_protect)

все какбы работает хорошо, но есть один маленький недостаток:
если начинаем селектить ячейки с той в которой фокус то с первого раза
не проходит, приходится еще раз кликать мышкой чтобы нормально
селектить ячейки.

можно както по другому решать ?
...
Рейтинг: 0 / 0
Mouse selection
    #33162303
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абсолютно не понятно, что вы спрашиваете. Может попробуете нормально сформулировать?
...
Рейтинг: 0 / 0
Mouse selection
    #33162377
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если так ?
для ДВ типа грид Mouse selection не работает если во всех ячейках ДВ можно вводить данные.
Mouse selection - свойство ДВ.
PB8
...
Рейтинг: 0 / 0
Mouse selection
    #33162425
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем нужно это "mouse selection"?
...
Рейтинг: 0 / 0
Mouse selection
    #33162885
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтобы выбирать ячейки в гриде и делать операции copy/paste наподобии Excel
...
Рейтинг: 0 / 0
Mouse selection
    #33163023
Фотография AIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри в PFC n_cst_dwsrv_rowselection.
...
Рейтинг: 0 / 0
Mouse selection
    #33163061
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AIZПосмотри в PFC n_cst_dwsrv_rowselection.
спасибо,
я бы посмотрел но у меня нет этого PFC,
и инсталяшки PowerBuildera тоже нет,
может вышлишь по майлу или линк дашь откуда скачать?
...
Рейтинг: 0 / 0
Mouse selection
    #33163189
Фотография AIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой PB? Есть 5, 6, 7, 8, 9
...
Рейтинг: 0 / 0
Mouse selection
    #33163334
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AIZКакой PB? Есть 5, 6, 7, 8, 9
PB8
...
Рейтинг: 0 / 0
Mouse selection
    #33163482
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PFC теперь живет тут
но там не для восьмерки конечно.
...
Рейтинг: 0 / 0
Mouse selection
    #33163806
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗоринАндрейPFC теперь живет тут ...но rowselection service к заданному вопросу отношения не имеет.
2 zuzu
Можно попытаться принудительно уйти с текущего поля куда-нибудь еще с помощью SetColumn/SetRow, но, IMHO, шаманство это.
...
Рейтинг: 0 / 0
Mouse selection
    #33164012
Фотография AIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To zuzu: Выслал PFC 9 & 8 по mail из профиля
...
Рейтинг: 0 / 0
Mouse selection
    #33164291
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думаю что юзеры привыкнут к этому глюку,
шаманство с SetColumn/SetRow не помогло
...
Рейтинг: 0 / 0
Mouse selection
    #33164493
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так и не смог понять, какую проблему вы пытаетесь решить...
...
Рейтинг: 0 / 0
Mouse selection
    #33165121
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппЯ так и не смог понять, какую проблему вы пытаетесь решить...
в excele данные можно вводить в разных ячейках,
в тоже время эти ячейки можно выделять для операций типа copy/paste.
тоже самое надо проделать и для ДВ.
но оказывается что если юзер может
вводить данные то мouse selection для ДВ не работает нормально,
так как мышка выделяет текст в ячейке,
а мне надо выделить ячейки,
по другому не знаю как объеснить.
...
Рейтинг: 0 / 0
Mouse selection
    #33165268
_Guest_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это получится если св-во DW ReadOnly=True
...
Рейтинг: 0 / 0
Mouse selection
    #33165701
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Guest_1Это получится если св-во DW ReadOnly=True
выше написанно: все поля редактируемые.
...
Рейтинг: 0 / 0
Mouse selection
    #33165726
_Guest_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поэтому и стоит союз "если".
...
Рейтинг: 0 / 0
Mouse selection
    #33165971
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Guest_1Поэтому и стоит союз "если".
вопрос был как сделать без "если"
...
Рейтинг: 0 / 0
Mouse selection
    #33167006
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь понял. А зачем эмулировать Excel если есть Excel? :-)
Но вообще-то делается такое.
Кодируется объект, эмулирующий эффект лассо на ДВ и используется Selected DataWindow object property. Не очень тривиальный код, но делается ...
...
Рейтинг: 0 / 0
Mouse selection
    #33167140
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Филипп
Но вообще-то делается такое.
Кодируется объект, эмулирующий эффект лассо на ДВ а можно поподробнее ?
...
Рейтинг: 0 / 0
Mouse selection
    #33167148
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Трудно подробнее. В одном продукте, на котором я работал, это было сделано, но в двух кусках.
Один кусок - эмулятор Datawindow Paintera, как раз там лассо было сделано, для multiple selections мышью.
В другом куске делалась проверка required columns, все незаполненные required columns во всех рядах ДВ собирались в строку, годную для вот этого:
Код: plaintext
<DW Control Name>.Modify("DataWindow.Selected='<startrow/endrow/startobj/endobj;startrow/endrow ...>'")
Выдирать это (особенно первую часть) долго и нудно, так что...
...
Рейтинг: 0 / 0
Mouse selection
    #33167157
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппТрудно подробнее. В одном продукте, на котором я работал, это было сделано, но в двух кусках.
Один кусок - эмулятор Datawindow Paintera, как раз там лассо было сделано, для multiple selections мышью.
В другом куске делалась проверка required columns, все незаполненные required columns во всех рядах ДВ собирались в строку, годную для вот этого:
Код: plaintext
<DW Control Name>.Modify("DataWindow.Selected='<startrow/endrow/startobj/endobj;startrow/endrow ...>'")
Выдирать это (особенно первую часть) долго и нудно, так что...
проблема не в генерации Selected, а в том чтобы сделать так чтобы мышка двигаласть дальше ячеки в которой курсор застрял .
...
Рейтинг: 0 / 0
Mouse selection
    #33167196
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zuzuпроблема не в генерации Selected, а в том чтобы сделать так чтобы мышка двигаласть дальше ячеки в которой курсор застрял .
Не понял. Куда рукой поведёшь, туда мышка и двигается, в чём проблема то?
...
Рейтинг: 0 / 0
Mouse selection
    #33170227
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Филипп
спасибо за наводку, я и забыл что можно управлять крысой

вобщемто решение оказалось простым, даже автоскролл добавил,
и не надо было никакого эффекта лассо

вот srd file, может комуто тоже пригодится:
SRC
$PBExportHeader$u_dw_test.sru
forward
global type u_dw_test from datawindow
end type
end forward

global type u_dw_test from datawindow
integer width = 736
integer height = 428
string title = "none"
boolean hscrollbar = true
boolean vscrollbar = true
boolean livescroll = true
borderstyle borderstyle = stylelowered!
event mousemove pbm_dwnmousemove
end type
global u_dw_test u_dw_test

type prototypes
function boolean ReleaseCapture() LIBRARY "user32.dll"
function uint SetCapture(uint hwnd) LIBRARY "user32.dll"
function uint SendMessage(uint hwnd, uint msg, uint wparam, uint lparam) LIBRARY "user32.dll" ALIAS FOR "SendMessageA"
end prototypes

type variables

constant uint WM_HSCROLL = 276
constant uint WM_VSCROLL = 277

constant uint SB_LINEUP = 0
constant uint SB_LINELEFT = 0
constant uint SB_LINEDOWN = 1
constant uint SB_LINERIGHT = 1
end variables

forward prototypes
public function boolean ufa_is_mouse_selection ()
public function boolean ufa_is_grid ()
public subroutine ufa_set_protect_field (string as_field, string as_value)
end prototypes

event mousemove;
int px, py
if keydown(Keyalt!) then
px = PixelsToUnits(xpos, XPixelsToUnits!)
py = PixelsToUnits(ypos, YPixelsToUnits!)
if px < x then
SendMessage(handle(this), WM_HSCROLL, SB_LINELEFT, 0)
elseif px > x + width then
SendMessage(handle(this), WM_HSCROLL, SB_LINERIGHT, 0)
end if
if py < y then
SendMessage(handle(this), WM_VSCROLL, SB_LINEUP, 0)
elseif py > y + height then
SendMessage(handle(this), WM_VSCROLL, SB_LINEDOWN, 0)
end if
end if

end event

public function boolean ufa_is_mouse_selection ();return describe("datawindow.selected.mouse") = "yes"
end function

public function boolean ufa_is_grid ();return describe("dataWindow.processing") = "1"
end function

public subroutine ufa_set_protect_field (string as_field, string as_value);modify(as_field + '.protect=' + as_value)
SetCapture(handle(this))

end subroutine

on u_dw_test.create
end on

on u_dw_test.destroy
end on

event clicked;string ls_protect
if ufa_is_grid() and ufa_is_mouse_selection() then
if keydown(keyalt!) then
this.accepttext()
ls_protect = this.describe(dwo.name + '.protect')
ufa_set_protect_field(dwo.name, '1')
post ufa_set_protect_field(dwo.name, ls_protect)
else
ReleaseCapture()
end if
end if

end event

я бы прицепил тестовый прожект но не знаю как ,
подскажите если на других версиях PB работает.
на PB 8.0.3 Build 9704 работает очень даже хорошо.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Mouse selection
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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