Форум » 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 а не конкретные имена

Dima: fil пишет: if(empty(oGts) Видать это не то же самое что ONS==0 , не пашет в общем. За подход с cText() , спасибо , учту !!! А что по вопросу WHEN второго и третьего GET ?

fil: Напиши так iif(val(oDlg:aControls[1]:cText())==0, (oDlg:aControls[2]:cText(0), oDlg:aControls[2]:Disable(), oDlg:aControls[3]:cText(0), oDlg:aControls[3]:Disable() ), (oDlg:aControls[2]:Enable(), oDlg:aControls[3]:Enable()) )

Dima: fil Начинаю входить во вкус ООП Спасибо.

Dima: А вообще крайне не удобно конечно что функция форматирования @Z Picture для GET работает не так , как в Clipper :) Придется ёрзать способ с подменой Picture и символьными переменными....раз нет других идей :)

fil: В свое время у меня тож не получилось, к томуже потребовали, чтоб усе как в Excel.. Пришлось делать свое

Dima: fil пишет: В свое время у меня тож не получилось А что говорят по этому поводу на форуме у Линареса ? Долго там копался и не нашел пока что.......

fil: Dima пишет: А что говорят по этому поводу на форуме у Линареса ? Долго там копался и не нашел пока что....... Научился Вроде как они там довольно уверенно picture функциями пользуются. @Z я, правда, не нашел. Но эт надо все njgs picture get листать

Dima: fil пишет: Научился В начале я там ищу а потом если ответа не нахожу , спрашиваю тут.

Dima: Dima пишет: А вообще крайне не удобно конечно что функция форматирования @Z Picture для GET работает не так , как в Clipper :) Ладно , как там Павел говорил , берем кувалду и напильник и правим ;) Отыгрался цветами (написал не большую функцию) , которую как клин пришлось вставлять в Bchange,blostfocus,bgotfocus и тд и тп Для 3-х моих числовых GET , она такова [pre2] Func Cvet(og,og1,og2) // типа аналог @Z og:setcolor(if(val(og:ctext())==0 .and. !og:lfocused,CLR_WHITE,CLR_BLACK),CLR_WHITE) og1:setcolor(if(val(og1:ctext())==0 .and. !og1:lfocused,CLR_WHITE,CLR_BLACK),CLR_WHITE) og2:setcolor(if(val(og2:ctext())==0 .and. !og2:lfocused,CLR_WHITE,CLR_BLACK),CLR_WHITE) return nil [/pre2]



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