On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
администратор




Пост 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 , как это сделать ?


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 40 , стр: 1 2 All [только новые]





Пост N: 764
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 15.03.13 12:16. Заголовок: Dima пишет: 1. Как ..


Dima пишет:

 цитата:
1. Как при входе в READ сразу оказаться на последнем GET c количеством копий ?

может так kolcop:setfocus()

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2769
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.03.13 12:29. Заголовок: AlexMyr пишет: може..


AlexMyr пишет:

 цитата:
может так kolcop:setfocus()


что то новенькое и мысли не понял. так ведь не будет работать если тупо перед READ написать kolcop:setfocus()

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2746
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.03.13 12:51. Заголовок: Я делаю так: FOR nI ..


Я делаю так:
FOR nI TO (кол-во GET'ов)
HB_KeyPut( K_DOWN )
NEXT

У меня в GET стрелками перемещается... Я уж забыл как это сделал...
Типа: SET SCOREBOARD OFF && переключение сообщения вывода для READ
Не помню короче...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2770
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.03.13 13:03. Заголовок: Andrey пишет: FOR n..


Andrey пишет:

 цитата:
FOR nI TO (кол-во GET'ов)
HB_KeyPut( K_DOWN )
NEXT


Да это понятно. И да так работает когда в GET нет LISTBOX а с ним ты на первом же
листбоксе и останешься и не важно сколько HB_KeyPut( K_DOWN ) будет послано.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 86
Зарегистрирован: 19.05.05
ссылка на сообщение  Отправлено: 15.03.13 13:47. Заголовок: А почему нельзя кол ..


А почему нельзя кол листов поставить первым в выводе GETов ?
Но вообще-то предложение


 цитата:
может так kolcop:setfocus()



можно поставить в условие WHEN первого GETа, с какой-то логикой конечно,
чтобы повторный заход внутри READ не выбрасывал постояннно на последний GET

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2772
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.03.13 13:50. Заголовок: nick_mi пишет: А по..


nick_mi пишет:

 цитата:
А почему нельзя кол листов поставить первым в выводе GETов ?


Заказчик против.



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 87
Зарегистрирован: 19.05.05
ссылка на сообщение  Отправлено: 15.03.13 13:59. Заголовок: И только что попробо..


И только что попробовал для GTWVT перемещение между полями происходит по
клавишам стрелка вверх/вниз . Программа для всяких экспериментов сделана на базе тестовой программы
от ANDREY
click here
Установки в программе не менял

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 88
Зарегистрирован: 19.05.05
ссылка на сообщение  Отправлено: 15.03.13 14:03. Заголовок: В списке GETов ее мо..


В списке GETов ее можно поставить первой, а выводить в последней строке.
Тогда, правда Стрелка вверх работать в этом поле не будет, а по стрелке вниз
перемещение будет вверх на строку

@ 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

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2773
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.03.13 14:19. Заголовок: ладно оставим вопрос..


ладно оставим вопрос о переходе на последний GET. Он в принципе решаем если решить вопрос 2
Dima пишет:

 цитата:
2. Хотелось бы между GET c LISTBOX перемещаться стрелками вверх/вниз а не с помощью TAB , как это сделать ?



Какой исходник править я уже нашел (tgetlist.prg из сырцов) , смотрю где нужно переделать и пока не вижу.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2774
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.03.13 14:35. Заголовок: Был там такой код ..


Был там такой код
 
ELSEIF oTheClass == "LISTBOX"
IF nKey == K_UP
oGUI:PrevItem()
nKey := 0

ELSEIF nKey == K_DOWN
oGUI:NextItem()
nKey := 0

ELSEIF nKey == K_SPACE
IF ! oGUI:DropDown
ELSEIF ! oGUI:IsOpen
oGUI:Open()
nKey := 0
ENDIF



переделал на
 
ELSEIF oTheClass == "LISTBOX"
IF nKey == K_UP
if oGUI:Isopen
oGUI:PrevItem()
nKey := 0
else
oGet:exitState := GE_UP
endif

ELSEIF nKey == K_DOWN
if oGUI:Isopen
oGUI:NextItem()
nKey := 0
else
oGet:exitState := GE_DOWN
endif

ELSEIF nKey == K_SPACE
IF ! oGUI:DropDown
ELSEIF ! oGUI:IsOpen
oGUI:Open()
nKey := 0
ENDIF



Вроде работает ;)

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2775
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.03.13 15:20. Заголовок: Пробую там же переде..


Пробую там же переделать реакцию на ESC когда сижу внутри LISTBOX. Ранее по ESC закрывались все GET и из READ
я выходил. Так мне не подходит.
Сделал так
 
ELSEIF nKey == K_ESC
if oGUI:Isopen .and. oGUI:DropDown
OGui:Close()
oGUI:Display()
nKey := 0
endif

Есть правда не увязочка.
 
{" 1. Не печатать",;
" 2. 12 штук на A4 (70 x 65)",;
" 3. 88 штук на A4 (25 x 25)",;
" 4. 190 штук на A4 (15 x 20)",;
" 5. 10 штук на A4 (50 x 90)"} ;

Если я открыл LISTBOX и оказался на пункте 3 в LISTBOX , затем побегал в нем курсором
и нажимаю ESC , хотелось бы снова оказаться на пункте 3 в GET , но реально
попадаю на тот пункт который был выбран перед нажатием ESC.




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3829
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.12.14 15:43. Заголовок: Вопрос про GET (что ..


Вопрос про GET (что то не нашел сходу):
Как для @ y,x GET "Список.........1" PUSHBUTTON сделать выход кроме ENTER еще по клавише F3 и F4 ?


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4347
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.12.14 16:21. Заголовок: set key -2 to hb_Key..


set key -2 to hb_KeyPut(chr(13))
set key -3 to hb_KeyPut(chr(13))

твой GET

set key -2 to
set key -3 to


ну или исходник переделать

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3830
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.12.14 16:30. Заголовок: Dima пишет: set key..


Dima пишет:

 цитата:
set key -2 to hb_KeyPut(chr(13))


Тогда я потом не отловлю какая была нажата клавиша, для дальнейшего анализа !
Как то назначались такие действия, помню по Клиперу еще.



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4348
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.12.14 16:33. Заголовок: может тогда Get..


может тогда GetApplyKey(<Get-объект>,<INKEY-код>)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3831
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.12.14 16:50. Заголовок: Вот есть пример. *..


Вот есть пример.
Скрытый текст

Как сделать выход допустим по клавише F2 но чтобы по Lastkey() можно было потом определить,
что была нажата клавиша F2 ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4351
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.12.14 19:08. Заголовок: Andrey пишет: Тогда..


Andrey пишет:

 цитата:
Тогда я потом не отловлю какая была нажата клавиша, для дальнейшего анализа !


а если так

private lF2:=.f.
setkey(K_F3,{|| lF2:=.t., hb_Keyput(chr(13))} )


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3833
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.12.14 20:38. Заголовок: Dima пишет: а если ..


Dima пишет:

 цитата:
а если так
private lF2:=.f.
setkey(K_F3,{|| lF2:=.t., hb_Keyput(chr(13))} )



Спасибо, попробую !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3834
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.12.14 20:55. Заголовок: Делаю так: READ M..


Делаю так:
READ MSG AT MAXROW(),0,MAXCOL()
IF lF2 == .t.
CLEAR TYPEAHEAD
HB_KeyPut(K_F3)
ENDIF
nKey := LASTKEY()

nKey возвращает 13 !
Как правильно нужно сделать ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4352
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.12.14 21:21. Заголовок: Andrey пишет: IF lF..


Andrey пишет:

 цитата:
IF lF2 == .t.



Ну достаточно вот так IF LF2

Andrey пишет:

 цитата:
IF lF2 == .t.
CLEAR TYPEAHEAD
HB_KeyPut(K_F3)
ENDIF



Уверен что условие срабатывает и LF2==.t. ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3835
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.12.14 21:26. Заголовок: Dima пишет: Уверен ..


Dima пишет:

 цитата:
Уверен что условие срабатывает и LF2==.t. ?


Да ! Поставил туда ALERT("LF2==T") - срабатывает !

Вот исходник (только там я на F2 повесил обработку):
Скрытый текст



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3836
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.12.14 22:57. Заголовок: Dima СПАСИБО ! :sm3..


Dima СПАСИБО !
Забыл уже про это...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4534
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.02.15 18:23. Заголовок: А возможно ли в клас..


А возможно ли в классе HBGetList , переопределить какой то METHOD на
свой (со своими правками) не перебивая сам сырец класса HBGetList ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 284
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 25.02.15 20:10. Заголовок: override..


override

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4538
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.02.15 20:21. Заголовок: fil пишет: override..


fil пишет:

 цитата:
override


Чуть подробнее можно (ни когда не юзал) ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 285
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 25.02.15 22:56. Заголовок: Ovrerride metgod Им..



Ovrerride metgod Имя_метода In Class Имя_класса with Своя_функция

Все обращения к этому методу будут перенаправляться в свою функцию. Обычно override делается в Main

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4540
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.02.15 23:20. Заголовок: fil Пробну , спасиб..


fil
Пробну , спасибо !

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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

Что не так сделал ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4544
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.02.15 15:43. Заголовок: Разобрался (погуглив..


Разобрался (погуглив)
В функцию MyTest добавляем строку
LOCAl Self := HB_QSelf()

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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 например , все в порядке.
Это лечится ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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 )

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6994
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.12.18 14:35. Заголовок: Andrey пишет: HB_Ke..


Andrey пишет:

 цитата:
HB_KeyPut( K_RIGHT )


Помогло но только вот так
HB_KeyPut( K_UP )
HB_KeyPut( K_DOWN )

Пасиб за костыль

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1421
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 27.12.18 14:42. Заголовок: Оперативненько так ..


Оперативненько так
Dima пишет:

 цитата:
Отправлено: 15.03.13 11:51. Заголовок: Get Listbox
Пара вопросов.



Andrey пишет:

 цитата:
 Отправлено: Сегодня 13:44. Заголовок: Dima пишет: 1. Как .. - новое!
Попробуй 2 раза сделать:



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1422
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 27.12.18 14:52. Заголовок: Dima пишет: Пасиб з..


Dima пишет:

 цитата:
Пасиб за костыль


Что то подсказывает что GetList обект имеет номер текущего Get объекта ::nPos . Ему передается фокус ввода ::setfocus() и далее что то типа ::reader() выполняет редактирование.
может вместо костыля найти где установить это ::nPos
Дим, скинь короткий примерчик, с батником для сборки. Могу поковырять ( у меня все под ГУЙ настроено c 2000 года, буду мучительно вспоминать как работать с консольным Get ).

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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 указываем свою дорогу

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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()
и переопредялять придется кого то из них, жаль что не подобраться к данными класса напрямую не меняя исходники.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6996
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.12.18 17:31. Заголовок: Haz Вот теперь все ..


Haz
Вот теперь все работает как надо
Спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 40 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 182
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет