Форум » FiveWin » ON CHANGE (GET) » Ответить

ON CHANGE (GET)

Dima: [pre2] #include "FiveWin.ch" function Main() LOCAL oDlg, oGet LOCAL cCad := " " DEFINE DIALOG oDlg @ 1,6 GET oGet VAR cCad OF oDlg SIZE 60, 10 on change test(ccad) ACTIVATE DIALOG oDlg CENTERED return nil //------------------------------------------------------------------------// Func test(ccad) msginfo(ccad) return nil [/pre2] Вводим в Get какой символ , но при первом нажатии в функции TEST , пусто. Почему ? Вводим еще символ и только тогда в TEST видим первый введенный символ , без второго

Ответов - 29, стр: 1 2 All

Pasha: Введенный символ еще в буфере ввода, и не сразу попадает в переменную ccad Если испольщовать on change, тогда так: on change test(oGet) Func test(oGet) msginfo(oGet:oGet:buffer) return nil или вызывать oGet:Assign() для присваивания зачения буфера ввода переменной или вместо on change вызывать valid

fil: oGet:Changed:{||oGet:Assign(), Test(cCad)} - первое нажатие в бефере Но проще так: private oDlg - для окон всегда так .......................... @ 1,6 GET oGet VAR cCad OF oDlg SIZE 60, 10 on change test() .......................... Func test msginfo(oDlg:aControls[1]:cText() return nil

Dima: Pasha fil Спасибо !


Dima: И снова GET :) Get получает фокус ввода ogts:bGotFocus := { || oGts:Gohome()} и не пашет Get теряет фокус ввод ogts:bLostFocus := { || oGts:SelectAll()} и не пашет Куда копать и что я делаю не так ? PS Get лежит в Диалоге NOWAIT

fil: Что значит "не пашет" ? Какой эффект должен быть достигнут ? Ежели надо переместиться в начало GET'a моно написать так: ogts:bGotFocus := { || oGts:PostMsg(WM_KEYDOWN, VK_HOME)} или ogts:bGotFocus := { || oGts:SetPos(1)}

Dima: fil пишет: ogts:bGotFocus := { || oGts:SetPos(1)} В том и дело что курсор оказывается в том месте где я ткнул мышкой и совсем не в первой позиции , почему и спросил fil пишет: ogts:bGotFocus := { || oGts:PostMsg(WM_KEYDOWN, VK_HOME)} То же самое только все слева от курсора получается выделенным , но курсор именно там где я ткнул мышкой а не "ДОМА" Ситуация следующая. Первый раз попали в GET , курсор на 1 позиции .......побродили в бровсе не закрывая GET и затем в него возвращаемся и на первую позицию не попадаем даже если в bGotFocus прописано встать на 1 позицию. Где засада ?

fil: Ага, я тебе в личку напиcал

Dima: fil пишет: Ага, я тебе в личку напиcал Получил , спасибо. Честно говоря такой костыль вызвал удивление. И вот так во многих местах в FW до которых добрались мои рученки , везде нужен какой то коcтыль. Почему код ogts:bGotFocus := { || oGts:SetPos(1)} не срабатывает ясно наверное только господину Линаресу , либо я не так понимаю как это работает (молчу уже про систему координат в окне и в диалоге и разницу в масштабе в 2 раза ......это что то и наверное живет только в FW ) Можешь внести ясность ?

fil: Не, не могу. Интуитивно я понимаю, что надо делать так или иначе, а вот обяснить.. это к ММК

Dima: fil пишет: а вот обяснить.. это к ММК Он не особо любит такие мелкие вопросы и весьма вероятно уведет разговор в другое русло и на вопрос ответа не будет

ММК: Dima пишет: Он не особо любит такие мелкие вопросы и весьма вероятно уведет разговор в другое русло и на вопрос ответа не будет А вопрос не мелкий. Т.к. он сильно напоминает анекдот про японскую лесопилку , которую наши мужики все же ломом добили.. Если речь идет о GET нормальной ориентации , то можно покопать , а если ты по прежнему пытаешься "доработать" xBrows всовывая ему свой GET то это к Линарису :))) У меня есть к тебе предложение. Сделай простенький примерчик с диалогом без NOWAIT и GETом тогда будет проще что-то понять и посоветовать. Давйте лучше поздравим друг друга с Новым Годом! :))

Dima: ММК пишет: Давйте лучше поздравим друг друга с Новым Годом! :)) Я знал что ты уведешь тему в другое русло С наступающим Новым годом тебя дружище !!! ПС ММК пишет: а если ты по прежнему пытаешься "доработать" xBrows всовывая ему свой GET то это к Линарису :))) Я и не пытался это сделать. Речь идет про обычный поиск в бровсе с помощью Get , который живет в NOWAIT диалоге. Не вижу в этом ни чего не обычного. Ведь без NOWAIT , для того что бы переключится в бровс , диалог нужно закрыть.

Pasha: Dima пишет: Речь идет про обычный поиск в бровсе с помощью Get Я вижу, что, несмотря на накрытый стол и водку в холодильнике, заседание продолжается :) Вставлю и свои 5 копеек. Я для поиска в бровсе обычно вставляю get в панель кнопок oBar. Иногда для бровса делаю переключение режима редакции/поиска. Если включен режим поиска - при наборе с клавиатуры выполняется поиск в активной колонке. Строку поиска при этом отображаю в oMsgBar

Dima: Pasha Спасибо за идею.

Dima: Есть кучка числовых GET в диалоге. В Picture везде присутствует "@Z" , тем не менее при нулевых значениях нолики все равно рисуются. Как это исправить ?

fil: Я писал свою обработку для цифрового GET'a, но наверное можно после иициализации изобразить oDlg:aControls[nn]:cText(space(нужное число)).

Dima: fil Попробую. Спасибо.

fil: Или наоборот - делаем GET с PICTURE "X" и переменной в виде строки, а на bGotFocus прописываем туда PICTURE "99.99.99..."

Dima: Что то застрял на ровном месте , в Clipper это все делалось довольно просто. [pre2] local ons:=0 local ons1:=0 local ons2:=0 @ 52,150 get ogts var ons picture "@Z@K 999999.999" ; // первый of odlz ; size 130,27 ; on change (ogts:assign(),if(ons==0,eval({||ons1:=0,ons2:=0}),""),; ogts1:assign(),ogts2:assign(),ogts1:refresh(),ogts2:refresh()) @ 82,150 get ogts1 var ons1 picture "@Z@K 9999" ; // второй when if(ons>0 .or. ons2>0,.f.,.t.) ; of odlz ; size 130,27 @ 112,150 get ogts2 var ons2 picture "@Z@K 9999.9" ; // третий when if(ons>0 .or. ons1>0,.f.,.t.) ; of odlz ; size 130,27 [/pre2] В первом GET ввожу цифру больше нуля , но второй и третий GET внешне остаются доступными Вроде в ON CHANGE первого GET все верно написал.

fil: А незя так написать on change if(empty(oGts), (oGts1:cText(0), oGts2:cText(0)),"") и ничего рефрешить не надо и вобще лучше пользовать aControls а не конкретные имена



полная версия страницы