Автор | Сообщение |
|
| постоянный участник
|
Пост 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
| |
|
Ответов - 12
[только новые]
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 16.06.08 12:57. Заголовок: ну прицепи к нему TS..
ну прицепи к нему TSBROWSE меркадовский
| |
|
|
| постоянный участник
|
Пост N: 604
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.06.08 15:09. Заголовок: fil пишет: ну прице..
fil пишет: цитата: | ну прицепи к нему TSBROWSE меркадовский |
| А что это такое ????
| |
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 16.06.08 15:15. Заголовок: да можно любой броуз..
да можно любой броузер, а почему Listbox не потянет ?
| |
|
|
| постоянный участник
|
Пост N: 605
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.06.08 09:53. Заголовок: fil пишет: да можно..
fil пишет: цитата: | да можно любой броузер, а почему Listbox не потянет ? |
| Читать внимательнее: // LISTBOX не предлагать !!! Справочник улиц на 4000 записей он не потянет, // да и нет в нем последовательного поиска по буквам улиц !
| |
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 17.06.08 12:05. Заголовок: Читать внимательнее:..
Читать внимательнее: //почему Listbox не потянет ? ЭТО вопрос, а не предложение А хочешь последовательного поиска - берешь любой броузер и пишешь руками обработку
| |
|
|
| постоянный участник
|
Пост N: 120
Зарегистрирован: 13.10.05
|
|
Отправлено: 19.06.08 06:21. Заголовок: Я так и делаю. По кн..
Я так и делаю. По кнопке вызывается окно с броузером , в котором ищу и в 200 тыс.записей
| |
|
|
| постоянный участник
|
Пост N: 606
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.06.08 12:20. Заголовок: Vlad04 пишет: По кн..
Vlad04 пишет: цитата: | По кнопке вызывается окно с броузером , в котором ищу и в 200 тыс.записей |
| Так я тоже так и хочу сделать !!! Только результат поиска хочу засунуть в названии кнопки !!! Потому что поиск производится не по 1-му параметру, а по нескольким.... И кнопок таких нужно прилично .....
| |
|
|
| постоянный участник
|
Пост N: 121
Зарегистрирован: 13.10.05
|
|
Отправлено: 26.06.08 11:31. Заголовок: Отсутствовал,напишу ..
Отсутствовал,напишу тебе в личку
| |
|
|
| постоянный участник
|
Пост N: 608
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.07.08 12:51. Заголовок: Vlad04 пишет: Отсу..
Vlad04 пишет: цитата: | Отсутствовал,напишу тебе в личку |
| Так и не дождался !!!
| |
|
|
| постоянный участник
|
Пост 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 //////////////////////////////////////////
| |
|
|
| постоянный участник
|
Пост 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 //////////////////////////////////////////
| |
|
|
|
| постоянный участник
|
Пост 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 //////////////////////////////////////////
| |
|
|
|