Автор | Сообщение |
|
| |
Пост N: 2768
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.03.13 11:51. Заголовок: Get Listbox
Пара вопросов. @ 12,45 ,19 ,71 get vid5 listbox {" Не печатать",; " 12 штук на A4 (70 x 65)",; " 88 штук на A4 (25 x 25)",; " 190 штук на A4 (15 x 20)",; " 10 штук на A4 (50 x 90)"} ; caption "Печать ценников " ; DROPDOWN SCROLLBAR @ 13,45 ,17,55 get vid listbox {" Широкая "," Узкая "} ; caption "Масштаб печати " ; DROPDOWN SCROLLBAR @ 14,27 say "Количество копий " get kolcop picture "9" read 1. Как при входе в READ сразу оказаться на последнем GET c количеством копий ? 2. Хотелось бы между GET перемещаться стрелками вверх/вниз а не с помощью TAB , как это сделать ?
|
|
|
Ответов - 40
, стр:
1
2
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 3835
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.12.14 21:26. Заголовок: Dima пишет: Уверен ..
Dima пишет: цитата: | Уверен что условие срабатывает и LF2==.t. ? |
| Да ! Поставил туда ALERT("LF2==T") - срабатывает ! Вот исходник (только там я на F2 повесил обработку): Скрытый текст ******************************************************************** FUNCTION Quest_My() LOCAL nY := 6, nX := 10, nY2 := 16, nX2 := 70, nI LOCAL lCancel := .T., lAns := .T., lOk := .T., nKey LOCAL lEditForm := .T., lPrint := .T., lEditShabl := .T. LOCAL cButtonClr := "15/3,0/12,4/15,12/3", cButtCol := "0/15" LOCAL nVar := 1, aGroup := {} , getlist := {}, nKnopka := 0 LOCAL cScrTemp := SaveScreen(,,,) , cColor := SETCOLOR() LOCAL lKeyF2 := .f. SetKey( K_F2,{|| lKeyF2:=.t., hb_Keyput(chr(13))} ) SETCOLOR("1/15,0/15,1/15,4/15,5/15,3/1,10/1,1/2") @ nY+2, nX+30 GET lEditForm PUSHBUTTON ; CAPTION " Открыть форму " ; STATE { || IsOk(@lAns, 1), ReadKill(.T.) } ; COLOR cButtonClr ; MESSAGE "Вызов редактора с формой" @ nY+4, nX+30 GET lPrint PUSHBUTTON ; CAPTION " Печать формы " ; STATE { || IsOk(@lAns, 1), ReadKill(.T.) } ; COLOR cButtonClr ; MESSAGE "Печатать форму на текущий принтер" @ nY+6, nX+30 GET lEditShabl PUSHBUTTON ; CAPTION " Редактировать шаблон " ; STATE { || IsOk(@lAns, 1), ReadKill(.T.) } ; COLOR cButtonClr ; MESSAGE "Редактировать шаблон формы в редакторе" @ nY+8, nX+30 GET lCancel PUSHBUTTON ; CAPTION " Выход " ; STATE { || IsOk(@lAns, 1), ReadKill(.T.) } ; COLOR cButtonClr ; MESSAGE "Выход из меню" READ MSG AT MAXROW(),0,MAXCOL() IF lKeyF2 == .t. ALERT("K_F2") CLEAR TYPEAHEAD HB_KeyPut(K_F2) ENDIF nKey := LASTKEY() @ 0,0 SAY "" ?? "KEY=",HB_NtoS(nKey), " lEditForm=",lEditForm," lPrint=",lPrint,"lEditShabl=",lEditShabl, "lCancel=",lCancel ? "lKeyF2=", lKeyF2 wait IF nKey == K_ESC nKnopka := 0 ELSEIF nKey == K_ENTER nKnopka := -13 ELSEIF nKey > 999 IF lEditForm == .F. nKnopka := 1 ELSEIF lPrint == .F. nKnopka := 2 ELSEIF lEditShabl == .F. nKnopka := 3 ELSEIF lCancel == .F. nKnopka := 0 ENDIF ELSE nKnopka := 0 ENDIF CLEAR GETS wait RestScreen(,,,, cScrTemp ) SETCOLOR( cColor ) Return nKnopka ************************************* STATIC Function IsOk(lAns, n) IF n == 1 lAns := .T. Else lAns := .F. ENDIF Return .T.
|
|
|
|
|
| |
Пост N: 4353
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.12.14 22:00. Заголовок: Andrey пишет: IF lK..
Andrey пишет: цитата: | IF lKeyF2 == .t. ALERT("K_F2") CLEAR TYPEAHEAD HB_KeyPut(K_F2) ENDIF |
| вот так IF lKeyF2 == .t. ALERT("K_F2") CLEAR TYPEAHEAD HB_KeyPut(K_F2) inkey(0.01) ENDIF
|
|
|
|
| постоянный участник
|
Пост N: 3836
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.12.14 22:57. Заголовок: Dima СПАСИБО ! :sm3..
Dima СПАСИБО ! Забыл уже про это...
|
|
|
|
| |
Пост N: 4534
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.02.15 18:23. Заголовок: А возможно ли в клас..
А возможно ли в классе HBGetList , переопределить какой то METHOD на свой (со своими правками) не перебивая сам сырец класса HBGetList ?
|
|
|
|
| |
Пост N: 284
Зарегистрирован: 17.06.10
|
|
Отправлено: 25.02.15 20:10. Заголовок: override..
override
|
|
|
|
| |
Пост N: 4538
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.02.15 20:21. Заголовок: fil пишет: override..
fil пишет: Чуть подробнее можно (ни когда не юзал) ?
|
|
|
|
| |
Пост N: 285
Зарегистрирован: 17.06.10
|
|
Отправлено: 25.02.15 22:56. Заголовок: Ovrerride metgod Им..
Ovrerride metgod Имя_метода In Class Имя_класса with Своя_функция Все обращения к этому методу будут перенаправляться в свою функцию. Обычно override делается в Main
|
|
|
|
| |
Пост N: 4540
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.02.15 23:20. Заголовок: fil Пробну , спасиб..
fil Пробну , спасибо !
|
|
|
|
| |
Пост N: 4543
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.02.15 14:24. Заголовок: Что то нормально не ..
Что то нормально не выходит. #include "xhbcls.ch" #include "inkey.ch" proc main local aa:=1 local bb:="" cls OVERRIDE METHOD GUIApplyKey In Class HBGetList with METHOD MYTEST @ 13,45 ,17,55 get bb listbox {" TEST1 "," TEST2 "} ; DROPDOWN SCROLLBAR @ 14,27 say "TEST " get aa picture "999999" read return Func MYTEST(oGet, oGUI, nKey, oMenu, aMsg) // это полный аналог метода GUIApplyKey с моими правками *METHOD GUIApplyKey( oGet, oGUI, nKey, oMenu, aMsg ) CLASS HBGetList При нажатии пробела прога падает с месагой Error BASE/1003 Variable does not exist: SELF Что не так сделал ?
|
|
|
|
| |
Пост N: 4544
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.02.15 15:43. Заголовок: Разобрался (погуглив..
Разобрался (погуглив) В функцию MyTest добавляем строку LOCAl Self := HB_QSelf()
|
|
|
|
| |
Пост N: 6993
Зарегистрирован: 17.05.05
|
|
Отправлено: 27.12.18 11:14. Заголовок: n:=10 arr:={} for..
n:=10 arr:={} for i=1 to 20 aadd(arr,padr(hb_ntos( i ),10)) next @ 11,35 ,16,64 get n listbox arr color "w/b,w/n,w+/BG,n/bg*,n/BG,w/B,GR+/BG,N/R" DROPDOWN SCROLLBAR read Если n равно 10 как в примере , то при раскрытии Listbox , курсора не видно и он не становится на нужный элемент. Ставлю n равное 2 например , все в порядке. Это лечится ?
|
|
|
|
|
| постоянный участник
|
Пост N: 6152
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.12.18 13:44. Заголовок: Dima пишет: 1. Как ..
Dima пишет: цитата: | 1. Как при входе в READ сразу оказаться на последнем GET c количеством копий ? |
| Попробуй 2 раза сделать: HB_KeyPut( K_RIGHT ) HB_KeyPut( K_RIGHT )
|
|
|
|
| |
Пост N: 6994
Зарегистрирован: 17.05.05
|
|
Отправлено: 27.12.18 14:35. Заголовок: Andrey пишет: HB_Ke..
Andrey пишет: Помогло но только вот так HB_KeyPut( K_UP ) HB_KeyPut( K_DOWN ) Пасиб за костыль
|
|
|
|
| |
Пост N: 1421
Зарегистрирован: 20.02.11
|
|
Отправлено: 27.12.18 14:42. Заголовок: Оперативненько так ..
Оперативненько так Dima пишет: цитата: | Отправлено: 15.03.13 11:51. Заголовок: Get Listbox Пара вопросов. |
| Andrey пишет: цитата: | Отправлено: Сегодня 13:44. Заголовок: Dima пишет: 1. Как .. - новое! Попробуй 2 раза сделать: |
|
|
|
|
|
| |
Пост N: 1422
Зарегистрирован: 20.02.11
|
|
Отправлено: 27.12.18 14:52. Заголовок: Dima пишет: Пасиб з..
Dima пишет: Что то подсказывает что GetList обект имеет номер текущего Get объекта ::nPos . Ему передается фокус ввода ::setfocus() и далее что то типа ::reader() выполняет редактирование. может вместо костыля найти где установить это ::nPos Дим, скинь короткий примерчик, с батником для сборки. Могу поковырять ( у меня все под ГУЙ настроено c 2000 года, буду мучительно вспоминать как работать с консольным Get ).
|
|
|
|
| |
Пост N: 6995
Зарегистрирован: 17.05.05
|
|
Отправлено: 27.12.18 15:19. Заголовок: Haz пишет: Дим, ски..
Haz пишет: цитата: | Дим, скинь короткий примерчик, с батником для сборки |
| Dima пишет: цитата: | n:=10 arr:={} for i=1 to 20 aadd(arr,padr(hb_ntos( i ),10)) next @ 11,35 ,16,64 get n listbox arr color "w/b,w/n,w+/BG,n/bg*,n/BG,w/B,GR+/BG,N/R" DROPDOWN SCROLLBAR read Если n равно 10 как в примере , то при раскрытии Listbox , курсора не видно и он не становится на нужный элемент. Ставлю n равное 2 например , все в порядке. |
| А командная строка простая (например файл называется TEST.PRG) , тогда собираем так c:\hb32\bin\hbmk2.exe test PS К Harbour указываем свою дорогу
|
|
|
|
| |
Пост N: 1423
Зарегистрирован: 20.02.11
|
|
Отправлено: 28.12.18 13:34. Заголовок: Haz пишет: Могу пок..
Haz пишет: Вчера поковырял, глюк о котором говорил Дима имеет место быть когда инициирующий элемент в листбоксе по индексу более чем строк листбокса. В примере Димы строк 3 , а стартуем с 10 элемента и видим на экране 7,8,9 а вот 10 не прорисовывается . Причем любое действие с листбоксом ситуацию исправляет. Впечатление такое что при инициализации неверно расчитывается скоп диапазон , нужно 8-10 , а расчитан 7-9. Но само значение и внутренний индекс верны и указывают на 10. Посмотрел исходник , класс весь такой закрытый , весь протектед и к нему просто так не подъехать. Как вариант можно попробовать в блоке назначения :Reader := {|a,b,c,d | ... } поиграть c a и b Это примерно что и следующее : Дима переопределил метоl GuiApplyKey на свой и таким образом фиксит ситуацию каждый раз в цикле обработки нажатия клавиш. А посути проблема проявляется в методах :Display() или :Open() и переопредялять придется кого то из них, жаль что не подобраться к данными класса напрямую не меняя исходники.
|
|
|
|
| |
Пост N: 1424
Зарегистрирован: 20.02.11
|
|
Отправлено: 28.12.18 14:48. Заголовок: Haz пишет: Могу пок..
Без правки исходников ListBox это глюк лечится так n:=10 arr:={} for i=1 to 20 aadd(arr,padr(hb_ntos( i ),10)) next @ 11,35 ,16,64 get n listbox arr color "w/b,w/n,w+/BG,n/bg*,n/BG,w/B,GR+/BG,N/R" DROPDOWN SCROLLBAR Atail(GetList):Reader := {|a,b,c,d| a:control:topitem(a:VarGet()), GuiReader(a,b,c,d ) } read
|
|
|
|
| |
Пост N: 1425
Зарегистрирован: 20.02.11
|
|
Отправлено: 28.12.18 17:25. Заголовок: Последние исправлени..
Последние исправления с учетом того что Дима написал мне в телегу func main() n:=20 arr:={} for i=1 to 20 aadd(arr,padr(hb_ntos( i ),10)) next @ 11,35 ,16,64 get n listbox arr color "w/b,w/n,w+/BG,n/bg*,n/BG,w/B,GR+/BG,N/R" DROPDOWN SCROLLBAR Atail(GetList):Reader := {|a,b,c,d| __objAddMethod( a:control, "SetValue", @SetValue() ),; a:control:SetValue( a:VarGet() ) ,; GuiReader(a,b,c,d ) } read return nil Func SetValue( nPos ) local Self := hb_qSelf() local nRowCount := Self:nBottom - Self:nTop - 2 if ( Self:nItemCount - nPos ) < nRowCount Self:nTopItem := Self:nItemCount - nRowCount + if( nPos == Self:nItemCount, 1, 0) else Self:nTopItem := nPos end return nil
|
|
|
|
| |
Пост N: 6996
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.12.18 17:31. Заголовок: Haz Вот теперь все ..
Haz Вот теперь все работает как надо Спасибо.
|
|
|
Ответов - 40
, стр:
1
2
All
[только новые]
|
|