On-line: гостей 2. Всего: 2 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 603
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.06.08 11:16. Заголовок: Как сделать в GET'е выпадающий свой список ?


// Всем привет !
// Подскажите пожалуйста, как сделать в GET'е для PUSHBUTTON выпадающий свой список !
// LISTBOX не предлагать !!! Справочник улиц на 4000 записей он не потянет,
// да и нет в нем последовательного поиска по буквам улиц !
// Я набросал черновик проги, а как сделать чтоб выбранное значение отображалось
// в самой кнопке, я не знаю ???
// И еще мне нужно чтобы своя функция возвращала в GET:
// 1-"код значения" и 2-"строковую переменную по этому значению" для
// отображения в кнопке
// И еще вопрос: как заменить в кнопках символы "< >" на "[ ]" ???
// Помогите пожалуйста .....
// Спасибо заранее за помощь .....

#include "inkey.ch"
#include "getexit.ch"

FUNCTION MAIN()
Local cStr := space(20), lCancel := .t., lOk := .t.
Local nExitState, Getlist := {}
LOCAL cButtonClr := "15/3,0/12,4/15,12/3"
LOCAL aMenu := { "[ ]", "[ ]" }
LOCAL aCode := { 0 , 0 }


SET( _SET_EVENTMASK, INKEY_ALL )

cls
@ 3, 10 say '' get cStr

@ 5, 10 GET aCode[1] PUSHBUTTON ;
CAPTION aMenu[1] ;
STATE { || MyFunct(1,@aMenu[1],@aCode[1]) } ;
COLOR cButtonClr


@ 7, 10 GET aCode[2] PUSHBUTTON ;
CAPTION aMenu[2] ;
STATE { || MyFunct(2,@aMenu[2],aCode[1]) } ;
COLOR cButtonClr


@ 10, 5 GET lOk PUSHBUTTON ;
CAPTION "[ Ok ]" ;
STATE { || GetActive():exitState := GE_WRITE } ;
WHEN { || nExitState := GE_WRITE, .t. } ;
COLOR cButtonClr

@ 10, 25 GET lCancel PUSHBUTTON ;
CAPTION "[ Cancel ]" ;
STATE { || GetActive():exitState := GE_ESCAPE } ;
WHEN { || nExitState := GE_ESCAPE, .t. } ;
COLOR cButtonClr

read

SETCOLOR("15/1")
@ 12,0 SAY ""
? cStr
? aMenu[1], aMenu[2]
? aCode[1], aCode[2]
? lCancel, lOk, nExitState

wait


return nil
/////////////////////////////////////////
// Функция должна вернуть "код значения" и
// "строковую переменную по этому значению"
FUNCTION MyFunct(nI,cMenu,nCode)
LOCAL aNumbs := { "ОДИН", "ДВА", "ТРИ", "ЧЕТЫРЕ", "ПЯТЬ", "ШЕСТЬ", "СЕМЬ" }
LOCAL nChoice := 0, nLen := LEN(cMenu)

SAVE SCREEN
nChoice := ACHOICE( 12, 36, 19, 44, aNumbs )
IF ( !LASTKEY() == K_ESC )
ALERT( "Ваш выбор: " + aNumbs[ nChoice ] )
cMenu := "["+PADC(aNumbs[ nChoice ],nLen)+"]"
nCode := nChoice
ENDIF
RESTORE SCREEN

return nChoice


Спасибо: 0 
Профиль
Ответов - 12 [только новые]





Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 16.06.08 12:57. Заголовок: ну прицепи к нему TS..


ну прицепи к нему TSBROWSE меркадовский

Спасибо: 0 
постоянный участник




Пост N: 604
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.06.08 15:09. Заголовок: fil пишет: ну прице..


fil пишет:

 цитата:
ну прицепи к нему TSBROWSE меркадовский



А что это такое ????

Спасибо: 0 
Профиль



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 16.06.08 15:15. Заголовок: да можно любой броуз..


да можно любой броузер, а почему Listbox не потянет ?

Спасибо: 0 
постоянный участник




Пост N: 605
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.06.08 09:53. Заголовок: fil пишет: да можно..


fil пишет:

 цитата:
да можно любой броузер, а почему Listbox не потянет ?


Читать внимательнее:
// LISTBOX не предлагать !!! Справочник улиц на 4000 записей он не потянет,
// да и нет в нем последовательного поиска по буквам улиц !

Спасибо: 0 
Профиль



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 17.06.08 12:05. Заголовок: Читать внимательнее:..


Читать внимательнее:
//почему Listbox не потянет ?
ЭТО вопрос, а не предложение
А хочешь последовательного поиска - берешь любой броузер и пишешь руками обработку

Спасибо: 0 
постоянный участник


Пост N: 120
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 19.06.08 06:21. Заголовок: Я так и делаю. По кн..


Я так и делаю. По кнопке вызывается окно с броузером , в котором ищу и в 200 тыс.записей

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




Пост N: 606
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.06.08 12:20. Заголовок: Vlad04 пишет: По кн..


Vlad04 пишет:

 цитата:
По кнопке вызывается окно с броузером , в котором ищу и в 200 тыс.записей


Так я тоже так и хочу сделать !!!
Только результат поиска хочу засунуть в названии кнопки !!!
Потому что поиск производится не по 1-му параметру, а по нескольким....
И кнопок таких нужно прилично .....

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


Пост N: 121
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 26.06.08 11:31. Заголовок: Отсутствовал,напишу ..


Отсутствовал,напишу тебе в личку

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




Пост N: 608
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.07.08 12:51. Заголовок: Vlad04 пишет: Отсу..


Vlad04 пишет:

 цитата:

Отсутствовал,напишу тебе в личку



Так и не дождался !!!


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




Пост N: 609
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.07.08 12:52. Заголовок: ПОПЫТКА 2 ---- кое-ч..


ПОПЫТКА 2 ---- кое-что уже получилось !

// Подскажи пожалуйста, как сделать в GET'е для PUSHBUTTON выпадающий свой список !
// LISTBOX не предлагать !!! Справочник улиц на 4000 записей он не потянет,
// да и нет в нем последовательного поиска по буквам улиц !
// Я набросал черновик проги, а как сделать чтоб выбранное значение отображалось
// в самой кнопке, я не знаю ???
// И еще мне нужно чтобы своя функция возвращала в GET:
// 1-"код значения" из справочника

// Помоги пожалуйста .....
// Спасибо заранее за помощь .....

#include "inkey.ch"
#include "getexit.ch"

FUNCTION MAIN()
Local cStr := space(20), lCancel := .t., lOk := .t.
Local nExitState, Getlist := {}
LOCAL cButtonClr := "15/3,0/12,4/15,12/3"
LOCAL aMenu := { " 1* ", " 2* " }
LOCAL aCode := { 0 , 0 }

CLS
SET( _SET_EVENTMASK, INKEY_ALL )

@ 3, 10 say '' get cStr

@ 5, 10 GET aCode[1] PUSHBUTTON ;
CAPTION aMenu[1] ;
STATE { || MyFunct(1,aMenu[1],aCode[1]) } ;
STYLE (chr(91)+chr(93)) ;
COLOR cButtonClr


@ 7, 10 GET aCode[2] PUSHBUTTON ;
CAPTION aMenu[2] ;
STATE { || MyFunct(2,aMenu[2],aCode[1]) } ;
WHEN { || nExitState := GE_WRITE, .t. } ;
STYLE (chr(91)+chr(93)) ;
COLOR cButtonClr

@ 10, 5 GET lOk PUSHBUTTON ;
CAPTION " Ok " ;
STATE { || GetActive():exitState := GE_WRITE } ;
WHEN { || nExitState := GE_WRITE, .t. } ;
STYLE (chr(91)+chr(93)) ;
COLOR cButtonClr

@ 10, 25 GET lCancel PUSHBUTTON ;
CAPTION " Cancel " ;
STATE { || GetActive():exitState := GE_ESCAPE } ;
WHEN { || nExitState := GE_ESCAPE, .t. } ;
STYLE (chr(91)+chr(93)) ;
COLOR cButtonClr

read


SETCOLOR("15/1")
@ 12,0 SAY ""
? cStr
? aMenu[1],",", aMenu[2]
? aCode[1],",", aCode[2]
? lCancel, lOk, nExitState

wait

return nil
/////////////////////////////////////////
// Функция должна вернуть "код значения" из справочника
FUNCTION MyFunct(nI,cMenu,nCode)
LOCAL aNumbs := { "ОДИН", "ДВА", "ТРИ", "ЧЕТЫРЕ", "ПЯТЬ", "ШЕСТЬ", "СЕМЬ" }
LOCAL nChoice := 0, nLen := LEN(cMenu)
LOCAL myvar:=GETactive() //- возвращает активный GET

SAVE SCREEN
@ 12, 35 , 20, 45 BOX " " COLOR("0/11")
nChoice := ACHOICE( 13, 36, 19, 44, aNumbs )
IF ( !LASTKEY() == K_ESC )
ALERT( "Ваш выбор: " + aNumbs[ nChoice ] )
cMenu := PADC(aNumbs[ nChoice ],nLen)
nCode := nChoice
Myvar[24][4] := cMenu
ELSE
nCode := 0
ENDIF
RESTORE SCREEN

return nCode
//////////////////////////////////////////


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




Пост N: 610
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.07.08 14:10. Заголовок: // Ура, получилось....


// Ура, получилось.... Спасибо Сидорову Александру за помощь .....
// Если кому интересно, привожу ниже рабочий пример:

#include "inkey.ch"
#include "getexit.ch"

FUNCTION MAIN()
Local cStr := space(20), lCancel := .t., lOk := .t.
Local nExitState, Getlist := {}
LOCAL cButtonClr := "15/3,0/12,4/15,12/3"
LOCAL aMenu := { " 1* ", " 2* " }
LOCAL aCode := { 0 , 0 }, aLCode := {.f.,.f.}

CLS
SET( _SET_EVENTMASK, INKEY_ALL )

@ 3, 10 say '' get cStr

@ 5, 10 GET aLCode[1] PUSHBUTTON ;
CAPTION aMenu[1] ;
STATE { || MyFunct(1,@aMenu[1],@aCode[1]) } ;
STYLE (chr(91)+chr(93)) ;
COLOR cButtonClr


@ 7, 10 GET aLCode[2] PUSHBUTTON ;
CAPTION aMenu[2] ;
STATE { || MyFunct(2,@aMenu[2],@aCode[2]) } ;
STYLE (chr(91)+chr(93)) ;
COLOR cButtonClr

@ 10, 5 GET lOk PUSHBUTTON ;
CAPTION " Ok " ;
STATE { || GetActive():exitState := GE_WRITE } ;
WHEN { || nExitState := GE_WRITE, .t. } ;
STYLE (chr(91)+chr(93)) ;
COLOR cButtonClr

@ 10, 25 GET lCancel PUSHBUTTON ;
CAPTION " Cancel " ;
STATE { || GetActive():exitState := GE_ESCAPE } ;
WHEN { || nExitState := GE_ESCAPE, .t. } ;
STYLE (chr(91)+chr(93)) ;
COLOR cButtonClr

read

SETCOLOR("15/1")
@ 12,0 SAY ""
? cStr
? aMenu[1],",", aMenu[2]
? aCode[1],",", aCode[2]
?
? aLCode[1],",", aLCode[2]
? "Ok=",lOk,",","Cancel=",lCancel
? "nExitSate=",LTRIM(STR(nExitState))
?
wait

return nil
/////////////////////////////////////////
// Функция вернет "строку" и "код значения" из справочника
FUNCTION MyFunct(nI,cMenu,nCode)
LOCAL aNumbs := { "ОДИН", "ДВА", "ТРИ", "ЧЕТЫРЕ", "ПЯТЬ", "ШЕСТЬ", "СЕМЬ" }
LOCAL nChoice := 0, nLen := LEN(cMenu)
LOCAL myvar:=GETactive() //- возвращает активный GET

SAVE SCREEN
@ 12, 35 , 20, 45 BOX " " COLOR("0/11")
nChoice := ACHOICE( 13, 36, 19, 44, aNumbs )
IF ( !LASTKEY() == K_ESC )
ALERT( "Ваш выбор: " + aNumbs[ nChoice ] )
cMenu := PADC(aNumbs[ nChoice ],nLen)
nCode := nChoice
Myvar[24][4] := cMenu
nCode := nChoice
ELSE
nCode := 0
ENDIF
RESTORE SCREEN

return nChoice
//////////////////////////////////////////


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




Пост N: 612
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.07.08 13:40. Заголовок: Блин, подключил цикл..


Блин, подключил цикл и перестал работать GET !!!
Выдает ошибку в системных функциях !!!
Как это можно исправить ??

#include "inkey.ch"
#include "getexit.ch"

FUNCTION MAIN()
Local cStr := space(20), lCancel := .t., lOk := .t.
Local nExitState, Getlist := {}, nI, xPar1, xPar2
LOCAL cButtonClr := "15/3,0/12,4/15,12/3"
LOCAL aMenu := { " все 1* ", " все 2* " }
LOCAL aCode := { 0 , 0 }, aLCode := {.f.,.f.}
LOCAL aY := { 5 , 7 }, aX := { 10, 10}

CLS
SET( _SET_EVENTMASK, INKEY_ALL )

@ 3, 10 say '' get cStr

FOR nI := 1 TO LEN(aMenu)
// если поставить это, то работает, но тогда нельзя получить возвращаемые значения !!!
//xPar1 := aMenu[nI]
//xPar2 := aCode[nI]
//STATE { || MyFunct(nI,@xPar1,@xPar2) } ;

// не работает
@ aY[nI], aX[nI] GET aLCode[nI] PUSHBUTTON ;
CAPTION aMenu[nI] ;
STATE { || MyFunct(nI,@aMenu[nI],@aCode[nI]) } ;
STYLE (chr(91)+chr(93)) ;
COLOR cButtonClr
NEXT

@ 10, 5 GET lOk PUSHBUTTON ;
CAPTION " Ok " ;
STATE { || GetActive():exitState := GE_WRITE } ;
WHEN { || nExitState := GE_WRITE, .t. } ;
STYLE (chr(91)+chr(93)) ;
COLOR cButtonClr

@ 10, 25 GET lCancel PUSHBUTTON ;
CAPTION " Cancel " ;
STATE { || GetActive():exitState := GE_ESCAPE } ;
WHEN { || nExitState := GE_ESCAPE, .t. } ;
STYLE (chr(91)+chr(93)) ;
COLOR cButtonClr

read

SETCOLOR("15/1")
@ 12,0 SAY ""
? cStr
? aMenu[1],",", aMenu[2]
? aCode[1],",", aCode[2]

? aLCode[1],",", aLCode[2]
? "Ok=",lOk,",","Cancel=",lCancel
? "nExitSate=",LTRIM(STR(nExitState))

wait

return nil
/////////////////////////////////////////
// Функция должна вернуть "код значения" из справочника
FUNCTION MyFunct(nI,cMenu,nCode)
LOCAL aNumbs := { "ОДИН", "ДВА", "ТРИ", "ЧЕТЫРЕ", "ПЯТЬ", "ШЕСТЬ", "СЕМЬ" }
LOCAL nChoice := 0, nLen := LEN(cMenu)
LOCAL myvar:=GETactive() //- возвращает активный GET

SAVE SCREEN
@ 12, 35 , 20, 45 BOX " " COLOR("0/11")
nChoice := ACHOICE( 13, 36, 19, 44, aNumbs )
IF ( !LASTKEY() == K_ESC )
ALERT( "Ваш выбор: " + aNumbs[ nChoice ] )
cMenu := PADC(aNumbs[ nChoice ],nLen)
nCode := nChoice
Myvar[24][4] := cMenu
nCode := nChoice
ELSE
nCode := 0
ENDIF
RESTORE SCREEN

return nChoice
//////////////////////////////////////////

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