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




Пост 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: 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 
ПрофильЦитата Ответить
moderator


Пост 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 
ПрофильЦитата Ответить
moderator


Пост 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 
ПрофильЦитата Ответить
moderator


Пост 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 
ПрофильЦитата Ответить
moderator


Пост 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 
ПрофильЦитата Ответить
moderator


Пост 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 час. Хитов сегодня: 250
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет