Опциональный справочник с автозаполнением
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Опциональный справочник с автозаполнением
Всем добрый день !
Вот такая задачка.... Хотелось облегчить ввод имен и отчеств. Сделал соотв. таблицы (справочники).
Пробую 1 вариант. Ставлю элемент ComboDropBox c опцией AutoComplete со связью по этим таблицам.. И все бы хорошо и красиво, но.... Энтот шаблон требует (или я каких то настроек не вижу ?) строго выбирать из справочника, казалось бы не проблема - разрешить дополнение в тихом режиме, но со временем спр-ки распухают за счет редких и оч. редких имен и отчеств (а у нас еще и выходцев со знойного Азербайджана полно) и собственно удобство работы падает.
Хотелось бы так: вводим буковки - видим предлагаемый вариант через AutoComplete, если ничего не подходит, то дописываем до конца, НО при этом добавления в спр-к не происходит.
Пробую 2-1 вариант: ComboDropBox не по файлу, а по очереди (имен и отчеств) - тут как раз опциональность есть, но не так удобно
Вот собственно вопрос - можно ли сделать нужный по функциональности вар-т 1
Вот такая задачка.... Хотелось облегчить ввод имен и отчеств. Сделал соотв. таблицы (справочники).
Пробую 1 вариант. Ставлю элемент ComboDropBox c опцией AutoComplete со связью по этим таблицам.. И все бы хорошо и красиво, но.... Энтот шаблон требует (или я каких то настроек не вижу ?) строго выбирать из справочника, казалось бы не проблема - разрешить дополнение в тихом режиме, но со временем спр-ки распухают за счет редких и оч. редких имен и отчеств (а у нас еще и выходцев со знойного Азербайджана полно) и собственно удобство работы падает.
Хотелось бы так: вводим буковки - видим предлагаемый вариант через AutoComplete, если ничего не подходит, то дописываем до конца, НО при этом добавления в спр-к не происходит.
Пробую 2-1 вариант: ComboDropBox не по файлу, а по очереди (имен и отчеств) - тут как раз опциональность есть, но не так удобно
Вот собственно вопрос - можно ли сделать нужный по функциональности вар-т 1
Re: Опциональный справочник с автозаполнением
Несколько сомнительна полезность автозаполнения именно для таких справочников .
Посмотрел свои справочники и имею имен ~7000 отчеств ~12000 и что , при наборе оператор должен все время
на справочник смотреть ? Мое (ошибочное) мнение , оператор вообще НЕ должен думать потому как устает. Пусть набирает что хочет, а по enter делаем проверку . Я бы попробовал привязать десяток наиболее распространенных имен и отчеств к клавишам F . Делал такое для справичников услуг и заболеваний и прижилось на 100%.
Посмотрел свои справочники и имею имен ~7000 отчеств ~12000 и что , при наборе оператор должен все время
на справочник смотреть ? Мое (ошибочное) мнение , оператор вообще НЕ должен думать потому как устает. Пусть набирает что хочет, а по enter делаем проверку . Я бы попробовал привязать десяток наиболее распространенных имен и отчеств к клавишам F . Делал такое для справичников услуг и заболеваний и прижилось на 100%.
Re: Опциональный справочник с автозаполнением
Вот как раз поэтому я не хочу делать расширяемый спр-к. С др. стороны из этих 7000 (а откуда их столько взялось ? иностранцы со всего мира) у меня в моем случае активно используется то наверно 50 от силы и есть разница ввести ВЯЧЕСЛАВОВНА или ВЯчеславовна сразу 10 нажатий экономим.BOB писал(а):Несколько сомнительна полезность автозаполнения именно для таких справочников .
Посмотрел свои справочники и имею имен ~7000 отчеств ~12000 и что , при наборе оператор должен все время
на справочник смотреть ?
Re: Опциональный справочник с автозаполнением
Ну это в идеале , а в реале нужно часто на экран поглядывать ,причем читать конец слова и определять конец набора
т.к. между Вя и славовна еще десяток отчеств . При этом есть большой соблазн нажимать не буквы , а стрелку.
В конечном итоге выигрыш если и есть то не значительный. Справочник у меня самый банальный для поликлиник (наверное для всей РФ) . Вот пример имен на букву а для мужчин . Очень удобно набрать АБДУ или АЛ остальное само добавится. Если у Вас справочник маленький , то надо разрешать добавление , если разрешили , загляните туда через месяц , будете очень удивлены.
Аб-Ахат 3 1
Абалан 4 1
Абас 5 1
Аббас 6 1
Аббасали 7 1
Абдалах 8 1
Абделнасир 9 1
Абдель 10 1
Абдеррезак 11 1
Абду-Салак 12 1
Абдуихак 13 1
Абдул 14 1
Абдул Хаюм 15 1
Абдула 16 1
Абдулабдус 17 1
Абдулак 18 1
Абдуламит 19 1
Абдулбари 20 1
Абдулбяр 21 1
Абдулгани 22 1
Абдулгасан 23 1
Абдулкадер 24 1
Абдулкадир 25 1
Абдулкаюм 26 1
Абдулла 27 1
Абдулмалик 28 1
Абдулмялин 29 1
Абдулхадер 30 1
Абдулхадис 31 1
Абдулхай 32 1
Абдулхак 33 1
Абдулхалик 34 1
Абдулхамед 35 1
Абдулхарис 36 1
Абдумашит 37 1
Абдунасир 38 1
Абдуразан 39 1
Абдурахман 40 1
Абдурашид 41 1
Абдурванс 42 1
Абдуябяр 43 1
Абзал 44 1
Абилкасым 45 1
Абкар 46 1
Абраам 47 1
Абрам 48 1
Абуали 49 1
Абубакар 50 1
Абула 51 1
Абуталиб 52 1
Абухарис 53 1
Абэс 54 1
Абяс 55 1
Аванес 56 1
Август 57 1
Авдляхат 58 1
Авенир 59 1
Аверкий 60 1
Аверроэс 61 1
Авесто 62 1
Авет 63 1
Аветик 64 1
Аветис 65 1
Ави 66 1
Авраам 67 1
Аврам 68 1
Автандил 69 1
Авчил 70 1
Агаси 71 1
Агван 72 1
Агзам 73 1
Агил 74 1
Агиль 75 1
Агирре 76 1
Агул 77 1
Адалет 78 1
Адам 79 1
Адат 80 1
Адгам 81 1
Адгур 82 1
Адель 83 1
Аден 84 1
Адесате 85 1
Аджай 86 1
Адил 87 1
Адиль 88 1
Адильхан 89 1
Адис 90 1
Адлан 91 1
Адлер 92 1
Адольф 93 1
Адриан 94 1
Адыбула 95 1
Аждар 96 1
Азамат 97 1
Азантин 98 1
Азат 99 1
Азер 100 1
Азиз 101 1
Азир 102 1
Азолбед 103 1
Азот 104 1
Аид 105 1
Аири 106 1
Айвар 107 1
Айген 108 1
Айгиз 109 1
Айдар 110 1
Айдел 111 1
Айдын 112 1
Айелш 113 1
Айжур 114 1
Айзер 115 1
Айзик 116 1
Айк 117 1
Айнур 118 1
Айрапет 119 1
Айрат 120 1
Айратй 121 1
Айса 122 1
Айтбен 123 1
Акаки 124 1
Акбар 125 1
Акбер 126 1
Аким 127 1
Акир 128 1
Акиси 129 1
Акиф 130 1
Аклям 131 1
Акмал 132 1
Акмаль 133 1
Акоп 134 1
Акпар 135 1
Акрам 136 1
Акреметдин 137 1
Актавий 138 1
Акунжан 139 1
Ал 140 1
Аладрин 141 1
Алай 142 1
Аламед 143 1
Алан 144 1
Аланбек 145 1
Алауди 146 1
Албай 147 1
Алгар 148 1
Алдулбари 149 1
Алей 150 1
Алек 151 1
Алекс 152 1
Алексан 153 1
Александр 154 1
Александро 156 1
Алексей 157 1
Алексий 158 1
Алем 159 1
Ален 160 1
Алескар 161 1
Алескер 162 1
Алесь 163 1
Али 164 1
Алиага 165 1
Алибала 166 1
Алибей 167 1
Алибек 168 1
Алик 169 1
Аликрам 170 1
Аликум 171 1
Алим 172 1
Алимбай 173 1
Алимджан 174 1
Алимптан 175 1
Алис 176 1
Алихаджи 177 1
Алихан 178 1
Алишер 179 1
Алия 180 1
Алияр 181 1
Аллан 182 1
Аллен 183 1
Алмад 184 1
Алмаз 185 1
Алтун 186 1
Алхазур 187 1
Алхузер 188 1
Алшир 189 1
Аль 190 1
Альбек 191 1
Альберг 192 1
Альберт 193 1
Альбинас 194 1
Альбион 195 1
Альгерт 196 1
Альмир 197 1
Альперен 198 1
Альпий 199 1
Альтин 200 1
Альткач 201 1
Альфис 202 1
Альфред 203 1
Алэна 204 1
Алям 205 1
Аляс 206 1
Амаду 207 1
Амакж 208 1
Аман 209 1
Аманулла 210 1
Амар 211 1
Амаяк 212 1
Аме 213 1
Амид 214 1
Амиль 215 1
Амин 216 1
Амир 217 1
Амиран 218 1
Амираслян 219 1
Амирах 220 1
Амирзяна 221 1
Амиридем 222 1
Амирин 223 1
Амирхан 224 1
Амияр 225 1
Амрилло 226 1
Амрулла 227 1
Амур 228 1
Амфилофий 229 1
Ананий 230 1
Анар 231 1
Анастас 232 1
Анатолий 234 1
Анвар 235 1
Анваржон 236 1
Анвер 237 1
Анвяр 238 1
Анджей 240 1
Анджелко 241 1
Андраник 242 1
Андраши 243 1
Андреа 244 1
Андреас 245 1
Андрей 246 1
Андрес 247 1
Андреян 248 1
Андриан 249 1
Андриас 250 1
Андрий 251 1
Андрис 252 1
Андроник 253 1
Анзар 254 1
Анзор 255 1
Анзори 256 1
Анибан 257 1
Анираф 258 1
Анис 259 1
Анисим 260 1
Анкин 261 1
Анраф 263 1
Анри 264 1
Ансад 265 1
Ансар 266 1
Анти 267 1
Антип 268 1
Антон 269 1
Антони 270 1
Антоний 271 1
Антонин 272 1
Антонио 273 1
Антуан 274 1
Ануар 275 1
Аншей 276 1
Ань 277 1
Аняс 278 1
Аполлон 279 1
Ара 280 1
Араз 281 1
Аралк 282 1
Арам 283 1
Араний 284 1
Арарат 285 1
Арвий 286 1
Аргил 287 1
Ардаман 288 1
Аревик 289 1
Ареланхан 290 1
Арен 291 1
Арзен 292 1
Арзу 293 1
Арзуман 294 1
Арзылан 295 1
Ариан 296 1
Ариим 297 1
Арий 298 1
Арик 299 1
Арин 300 1
Арис 301 1
Аристид 302 1
Ариф 303 1
Ариям 304 1
Аркадий 305 1
Арктур 306 1
Арлен 307 1
Арлик 308 1
Армавен 309 1
Армаис 310 1
Арман 311 1
Арманд 312 1
Арманс 313 1
Армен 314 1
Арменак 315 1
Армэн 316 1
Армян 317 1
Арнольд 318 1
Арон 319 1
Арпеник 320 1
Арсамак 321 1
Арсен 322 1
Арсений 323 1
Арсентий 324 1
Арсиян 325 1
Арслан 326 1
Арсланбек 327 1
Арслевдин 328 1
Арт 329 1
Артавазд 330 1
Артак 331 1
Артамес 332 1
Артем 333 1
Артемий 334 1
Артемон 335 1
Артур 336 1
Артурсепух 337 1
Арун 338 1
Арунас 339 1
Арутюн 340 1
Архан 341 1
Архип 342 1
Арчил 343 1
Аршалуис 344 1
Аршам 345 1
Асабали 346 1
Асель 347 1
Асиб 348 1
Асиф 349 1
Аскольд 350 1
Асламбек 351 1
Асламед 352 1
Аслан 353 1
Асланбек 354 1
Асм 355 1
Асмин 356 1
Аснаб 357 1
Астерий 358 1
Асун 359 1
Асхат 360 1
Атрат 361 1
Аугуту 362 1
Афанасий 363 1
Афган 364 1
Афенен 365 1
Афзалабдул 366 1
Африн 367 1
Афсун 368 1
Ахияр 369 1
Ахмад 370 1
Ахмат 371 1
Ахмед 372 1
Ахмедша 373 1
Ахмер 374 1
Ахмет 375 1
Ахмят 376 1
Ахсан 377 1
Ахтем 378 1
Ахтыр 379 1
Ахтям 380 1
Ашот 381 1
Ашрер 382 1
т.к. между Вя и славовна еще десяток отчеств . При этом есть большой соблазн нажимать не буквы , а стрелку.
В конечном итоге выигрыш если и есть то не значительный. Справочник у меня самый банальный для поликлиник (наверное для всей РФ) . Вот пример имен на букву а для мужчин . Очень удобно набрать АБДУ или АЛ остальное само добавится. Если у Вас справочник маленький , то надо разрешать добавление , если разрешили , загляните туда через месяц , будете очень удивлены.
Аб-Ахат 3 1
Абалан 4 1
Абас 5 1
Аббас 6 1
Аббасали 7 1
Абдалах 8 1
Абделнасир 9 1
Абдель 10 1
Абдеррезак 11 1
Абду-Салак 12 1
Абдуихак 13 1
Абдул 14 1
Абдул Хаюм 15 1
Абдула 16 1
Абдулабдус 17 1
Абдулак 18 1
Абдуламит 19 1
Абдулбари 20 1
Абдулбяр 21 1
Абдулгани 22 1
Абдулгасан 23 1
Абдулкадер 24 1
Абдулкадир 25 1
Абдулкаюм 26 1
Абдулла 27 1
Абдулмалик 28 1
Абдулмялин 29 1
Абдулхадер 30 1
Абдулхадис 31 1
Абдулхай 32 1
Абдулхак 33 1
Абдулхалик 34 1
Абдулхамед 35 1
Абдулхарис 36 1
Абдумашит 37 1
Абдунасир 38 1
Абдуразан 39 1
Абдурахман 40 1
Абдурашид 41 1
Абдурванс 42 1
Абдуябяр 43 1
Абзал 44 1
Абилкасым 45 1
Абкар 46 1
Абраам 47 1
Абрам 48 1
Абуали 49 1
Абубакар 50 1
Абула 51 1
Абуталиб 52 1
Абухарис 53 1
Абэс 54 1
Абяс 55 1
Аванес 56 1
Август 57 1
Авдляхат 58 1
Авенир 59 1
Аверкий 60 1
Аверроэс 61 1
Авесто 62 1
Авет 63 1
Аветик 64 1
Аветис 65 1
Ави 66 1
Авраам 67 1
Аврам 68 1
Автандил 69 1
Авчил 70 1
Агаси 71 1
Агван 72 1
Агзам 73 1
Агил 74 1
Агиль 75 1
Агирре 76 1
Агул 77 1
Адалет 78 1
Адам 79 1
Адат 80 1
Адгам 81 1
Адгур 82 1
Адель 83 1
Аден 84 1
Адесате 85 1
Аджай 86 1
Адил 87 1
Адиль 88 1
Адильхан 89 1
Адис 90 1
Адлан 91 1
Адлер 92 1
Адольф 93 1
Адриан 94 1
Адыбула 95 1
Аждар 96 1
Азамат 97 1
Азантин 98 1
Азат 99 1
Азер 100 1
Азиз 101 1
Азир 102 1
Азолбед 103 1
Азот 104 1
Аид 105 1
Аири 106 1
Айвар 107 1
Айген 108 1
Айгиз 109 1
Айдар 110 1
Айдел 111 1
Айдын 112 1
Айелш 113 1
Айжур 114 1
Айзер 115 1
Айзик 116 1
Айк 117 1
Айнур 118 1
Айрапет 119 1
Айрат 120 1
Айратй 121 1
Айса 122 1
Айтбен 123 1
Акаки 124 1
Акбар 125 1
Акбер 126 1
Аким 127 1
Акир 128 1
Акиси 129 1
Акиф 130 1
Аклям 131 1
Акмал 132 1
Акмаль 133 1
Акоп 134 1
Акпар 135 1
Акрам 136 1
Акреметдин 137 1
Актавий 138 1
Акунжан 139 1
Ал 140 1
Аладрин 141 1
Алай 142 1
Аламед 143 1
Алан 144 1
Аланбек 145 1
Алауди 146 1
Албай 147 1
Алгар 148 1
Алдулбари 149 1
Алей 150 1
Алек 151 1
Алекс 152 1
Алексан 153 1
Александр 154 1
Александро 156 1
Алексей 157 1
Алексий 158 1
Алем 159 1
Ален 160 1
Алескар 161 1
Алескер 162 1
Алесь 163 1
Али 164 1
Алиага 165 1
Алибала 166 1
Алибей 167 1
Алибек 168 1
Алик 169 1
Аликрам 170 1
Аликум 171 1
Алим 172 1
Алимбай 173 1
Алимджан 174 1
Алимптан 175 1
Алис 176 1
Алихаджи 177 1
Алихан 178 1
Алишер 179 1
Алия 180 1
Алияр 181 1
Аллан 182 1
Аллен 183 1
Алмад 184 1
Алмаз 185 1
Алтун 186 1
Алхазур 187 1
Алхузер 188 1
Алшир 189 1
Аль 190 1
Альбек 191 1
Альберг 192 1
Альберт 193 1
Альбинас 194 1
Альбион 195 1
Альгерт 196 1
Альмир 197 1
Альперен 198 1
Альпий 199 1
Альтин 200 1
Альткач 201 1
Альфис 202 1
Альфред 203 1
Алэна 204 1
Алям 205 1
Аляс 206 1
Амаду 207 1
Амакж 208 1
Аман 209 1
Аманулла 210 1
Амар 211 1
Амаяк 212 1
Аме 213 1
Амид 214 1
Амиль 215 1
Амин 216 1
Амир 217 1
Амиран 218 1
Амираслян 219 1
Амирах 220 1
Амирзяна 221 1
Амиридем 222 1
Амирин 223 1
Амирхан 224 1
Амияр 225 1
Амрилло 226 1
Амрулла 227 1
Амур 228 1
Амфилофий 229 1
Ананий 230 1
Анар 231 1
Анастас 232 1
Анатолий 234 1
Анвар 235 1
Анваржон 236 1
Анвер 237 1
Анвяр 238 1
Анджей 240 1
Анджелко 241 1
Андраник 242 1
Андраши 243 1
Андреа 244 1
Андреас 245 1
Андрей 246 1
Андрес 247 1
Андреян 248 1
Андриан 249 1
Андриас 250 1
Андрий 251 1
Андрис 252 1
Андроник 253 1
Анзар 254 1
Анзор 255 1
Анзори 256 1
Анибан 257 1
Анираф 258 1
Анис 259 1
Анисим 260 1
Анкин 261 1
Анраф 263 1
Анри 264 1
Ансад 265 1
Ансар 266 1
Анти 267 1
Антип 268 1
Антон 269 1
Антони 270 1
Антоний 271 1
Антонин 272 1
Антонио 273 1
Антуан 274 1
Ануар 275 1
Аншей 276 1
Ань 277 1
Аняс 278 1
Аполлон 279 1
Ара 280 1
Араз 281 1
Аралк 282 1
Арам 283 1
Араний 284 1
Арарат 285 1
Арвий 286 1
Аргил 287 1
Ардаман 288 1
Аревик 289 1
Ареланхан 290 1
Арен 291 1
Арзен 292 1
Арзу 293 1
Арзуман 294 1
Арзылан 295 1
Ариан 296 1
Ариим 297 1
Арий 298 1
Арик 299 1
Арин 300 1
Арис 301 1
Аристид 302 1
Ариф 303 1
Ариям 304 1
Аркадий 305 1
Арктур 306 1
Арлен 307 1
Арлик 308 1
Армавен 309 1
Армаис 310 1
Арман 311 1
Арманд 312 1
Арманс 313 1
Армен 314 1
Арменак 315 1
Армэн 316 1
Армян 317 1
Арнольд 318 1
Арон 319 1
Арпеник 320 1
Арсамак 321 1
Арсен 322 1
Арсений 323 1
Арсентий 324 1
Арсиян 325 1
Арслан 326 1
Арсланбек 327 1
Арслевдин 328 1
Арт 329 1
Артавазд 330 1
Артак 331 1
Артамес 332 1
Артем 333 1
Артемий 334 1
Артемон 335 1
Артур 336 1
Артурсепух 337 1
Арун 338 1
Арунас 339 1
Арутюн 340 1
Архан 341 1
Архип 342 1
Арчил 343 1
Аршалуис 344 1
Аршам 345 1
Асабали 346 1
Асель 347 1
Асиб 348 1
Асиф 349 1
Аскольд 350 1
Асламбек 351 1
Асламед 352 1
Аслан 353 1
Асланбек 354 1
Асм 355 1
Асмин 356 1
Аснаб 357 1
Астерий 358 1
Асун 359 1
Асхат 360 1
Атрат 361 1
Аугуту 362 1
Афанасий 363 1
Афган 364 1
Афенен 365 1
Афзалабдул 366 1
Африн 367 1
Афсун 368 1
Ахияр 369 1
Ахмад 370 1
Ахмат 371 1
Ахмед 372 1
Ахмедша 373 1
Ахмер 374 1
Ахмет 375 1
Ахмят 376 1
Ахсан 377 1
Ахтем 378 1
Ахтыр 379 1
Ахтям 380 1
Ашот 381 1
Ашрер 382 1
-
- ✯ Ветеран ✯
- Сообщения: 5163
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Опциональный справочник с автозаполнением
Надо делать комбо по очереди. А функциональность прописать руками. При событии NewSelection организовать поиск по очереди, если есть такой кусок имени, то присвоить значение из очереди. И не забыть о prop:SelStart и prop:SelEnd.
We are hard at work… for you. 

Re: Опциональный справочник с автозаполнением
Спасибо !kreator писал(а):Надо делать комбо по очереди. А функциональность прописать руками. При событии NewSelection организовать поиск по очереди, если есть такой кусок имени, то присвоить значение из очереди. И не забыть о prop:SelStart и prop:SelEnd.
Судя по всему у вас реализован такой вариант, если не жаль, поделитесь pls кодом.
- WadimZapara
- Активист
- Сообщения: 181
- Зарегистрирован: 11 Июнь 2008, 12:11
- Откуда: Тамбов
Re: Опциональный справочник с автозаполнением
Если тебя устраивает вариант 1, за исключением добавления в файл - можно ведь просто удалять только что добавленное.
Вариант ?
Вариант ?

Компьютер имеет то преимущество перед мозгом, что им пользуются...
Re: Опциональный справочник с автозаполнением
Думаю, что не вариант. Если потом открыть запись с удаленным из спр-ка элементом шаблон затрет "нестандартное" значениеWadimZapara писал(а):Если тебя устраивает вариант 1, за исключением добавления в файл - можно ведь просто удалять только что добавленное.
Вариант ?
-
- ✯ Ветеран ✯
- Сообщения: 5163
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Опциональный справочник с автозаполнением
У меня есть вариант обработки DropCombo при редактировании по месту.
DropEditQ2 - наша очередь.
Тебе нужно взять - только обработку NewSelection.
DropComboEIPKeyValid() - функция, определяющая, нужно ли обрабатывать нажатие клавиатуры. Выглядит так:
Если не понятно, пиши, попробую на досуге переписать для обычного DropCombo.
Код: Выделить всё
!Update the list with the value from the drop list
case event
of EVENT:Selected
if CON:ObjectID
do FillDropEditQ2
if ~records(DropEditQ2)
if LOC:EIPColumn1
LOC:EIPColumn1 = False
RETURN EditAction:Backward
else
RETURN EditAction:Forward
end
else
SELF.Feq{prop:Touched} = 1
end
else
end
of EVENT:DroppingDown
UPDATE(SELF.Feq)
if SELF.UseVar
get(DropEditQ2,1)
ASSERT(~ERRORCODE())
loop i#=1 to records(DropEditQ2)
get(DropEditQ2,i#)
ASSERT(~ERRORCODE())
if upper(sub(DropEditQ2.Name,1,len(clip(SELF.UseVar))))=upper(SELF.UseVar)
(SELF.Feq{Prop:ListFeq}){Prop:Selected} = i#
SELF.UseVar = DropEditQ2.Name
display(SELF.Feq)
break
end
end
else
get(DropEditQ2,1)
ASSERT(~ERRORCODE())
SELF.UseVar = DropEditQ2.Name
display(SELF.Feq)
end
of EVENT:AlertKey
if keycode()=EnterKey or keycode()=MouseLeft or keycode()=TabKey
UPDATE(SELF.Feq)
if SELF.UseVar
COL1:Name = clip(SELF.UseVar)
if ~Access:Colours1.Fetch(COL1:NameKey)
COLO0:ColourID = COL1:ID
COLO0:ObjectID = CON:ObjectID
if Access:ColoursOfObjects0.Fetch(COLO0:ObjectColourKey)
RETURN EditAction:None
else
CON:ColourID = COLO0:ID
end
else
RETURN EditAction:None
end
else
RETURN EditAction:None
end
end
of EVENT:Accepted
UPDATE(SELF.Feq)
COL1:Name = clip(SELF.UseVar)
if ~Access:Colours1.Fetch(COL1:NameKey)
COLO0:ColourID = COL1:ID
COLO0:ObjectID = CON:ObjectID
if Access:ColoursOfObjects0.Fetch(COLO0:ObjectColourKey)
RETURN EditAction:None ! Forward
else
CON:ColourID = COLO0:ID !DropEditQ.UnitID
end
end
of EVENT:NewSelection
UPDATE(SELF.Feq)
if SELF.UseVar
if DropComboEIPKeyValid()
selstart# = SELF.Feq{Prop:SelStart}
loop i#=1 to records(DropEditQ2)
get(DropEditQ2,i#)
ASSERT(~ERRORCODE())
if upper(sub(DropEditQ2.Name,1,len(clip(SELF.UseVar))))=upper(SELF.UseVar)
SELF.UseVar = DropEditQ2.Name
CON:ColourID = DropEditQ2.ID
display(SELF.Feq)
SELF.Feq{Prop:SelStart} = selstart#
SELF.Feq{Prop:SelEnd} = len(clip(SELF.UseVar))
(SELF.Feq{Prop:ListFeq}){Prop:Selected} = i#
break
end
end
end
end
end
Тебе нужно взять - только обработку NewSelection.
DropComboEIPKeyValid() - функция, определяющая, нужно ли обрабатывать нажатие клавиатуры. Выглядит так:
Код: Выделить всё
if ~keychar()
return False
end
if band(keystate(),0400h+0200h)
return False
end
if inlist(keycode(),LeftKey,RightKey,ShiftLeft,ShiftRight,BSKey)
return False
end
return True
We are hard at work… for you. 

Re: Опциональный справочник с автозаполнением
Спасибо, не так это и просто оказывается.... для меня...kreator писал(а):У меня есть вариант обработки DropCombo при редактировании по месту.
!Update the list with the value from the drop list
Если не понятно, пиши, попробую на досуге переписать для обычного DropCombo.

Попытаюсь разобраться... но ежели бы смогли скинуть код для обычного DropCombo было бы здорово, может и другим пригодится.
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Опциональный справочник с автозаполнением
Друзья, обрамляйте пожалуйста свой код соответствующими тегами для удобства чтения. Типа как ниже исправил.kreator писал(а):У меня есть вариант обработки DropCombo при редактировании по месту.
Спасибо.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
-
- ✯ Ветеран ✯
- Сообщения: 5163
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Опциональный справочник с автозаполнением
Сделал образец.
Блок данных:
ComboBox в структуре Windows:
Не забыть IMM.
Формируем Queue, например, после открытия файлов:
В Embed для нашего Combo на событие NewSelection пишем:
P.S. При этом не работает скроллирование по очереди, т.е. нужно еще обработать события ScrollUp и ScrollDown. Ну это если надо.
Блок данных:
Код: Выделить всё
LOC:Queue QUEUE,PRE()
LOC:Name LIKE(ADR:Name)
END
LOC:FirstName LIKE(ADR:Name)
Код: Выделить всё
COMBO(@s60),AT(17,167,173,10),USE(LOC:FirstName),IMM,VSCROLL,FORMAT('80L(2)|M@s60@'),DROP(10),FROM(LOC:Queue)
Формируем Queue, например, после открытия файлов:
Код: Выделить всё
Addressees{prop:SQL} = 'select * ' & |
'from DBA.Addressees ' & |
'order by DBA.Addressees.Name'
loop
next(Addressees)
if errorcode()
break
end
LOC:Queue.LOC:Name = ADR:Name
add(LOC:Queue)
end
Код: Выделить всё
update(?LOC:FirstName)
if LOC:FirstName
selstart# = ?LOC:FirstName{Prop:SelStart}
loop i#=1 to records(LOC:Queue)
get(LOC:Queue,i#)
if upper(sub(LOC:Queue.LOC:Name,1,len(clip(LOC:FirstName))))=upper(LOC:FirstName)
LOC:FirstName = LOC:Queue.LOC:Name
display(?LOC:FirstName)
?LOC:FirstName{Prop:SelStart} = selstart#
?LOC:FirstName{Prop:SelEnd} = len(clip(LOC:FirstName))
(?LOC:FirstName{Prop:ListFeq}){Prop:Selected} = i#
break
end
end
end
We are hard at work… for you. 

-
- ✯ Ветеран ✯
- Сообщения: 5163
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Опциональный справочник с автозаполнением
В догонку. Код для события ScrollDown:
Код для ScrollUp:
А в событии NewSelection вкралась неточность. Надо бы предусмотреть нажатие дополнительных клавиш (Delete, BackSpace и т.д.). Типа того:
где DropComboEIPKeyValid() проверяет нажатие нужных клавиш.
Код: Выделить всё
i# = (?LOC:FirstName{Prop:ListFeq}){Prop:Selected}
if i#<records(LOC:Queue)
get(LOC:Queue,i#+1)
LOC:FirstName = LOC:Queue.LOC:Name
display(?LOC:FirstName)
?LOC:FirstName{Prop:SelStart} = 1
?LOC:FirstName{Prop:SelEnd} = len(clip(LOC:FirstName))
(?LOC:FirstName{Prop:ListFeq}){Prop:Selected} = i#+1
end
Код: Выделить всё
i# = (?LOC:FirstName{Prop:ListFeq}){Prop:Selected}
if i#>1
get(LOC:Queue,i#-1)
LOC:FirstName = LOC:Queue.LOC:Name
display(?LOC:FirstName)
?LOC:FirstName{Prop:SelStart} = 1
?LOC:FirstName{Prop:SelEnd} = len(clip(LOC:FirstName))
(?LOC:FirstName{Prop:ListFeq}){Prop:Selected} = i#-1
end
Код: Выделить всё
update(?LOC:FirstName)
if LOC:FirstName
if DropComboEIPKeyValid()
selstart# = ?LOC:FirstName{Prop:SelStart}
loop i#=1 to records(LOC:Queue)
get(LOC:Queue,i#)
if upper(sub(LOC:Queue.LOC:Name,1,len(clip(LOC:FirstName))))=upper(LOC:FirstName)
LOC:FirstName = LOC:Queue.LOC:Name
display(?LOC:FirstName)
?LOC:FirstName{Prop:SelStart} = selstart#
?LOC:FirstName{Prop:SelEnd} = len(clip(LOC:FirstName))
(?LOC:FirstName{Prop:ListFeq}){Prop:Selected} = i#
break
end
end
end
end
We are hard at work… for you. 

Re: Опциональный справочник с автозаполнением
kreator, спасибо !
Попробовал, работает, считаю удобно.
Теорет. вопрос остается - при каких размерах списка будут заметны тормоза, ну это так из любопытства.
Еще раз благодарю за такую конкретную помощь.
Попробовал, работает, считаю удобно.
Теорет. вопрос остается - при каких размерах списка будут заметны тормоза, ну это так из любопытства.
Еще раз благодарю за такую конкретную помощь.
-
- ✯ Ветеран ✯
- Сообщения: 5163
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Опциональный справочник с автозаполнением
Для SQL, вообще, предела нет. Например, можно добавить физические процессоры на сервак. Опять же можно View сделать по одному полю. В конторе сейчас сделаем гигабитную сеть, причем на серваке - два гигабитных порта с функцией Teaming (работающие как один). А обычная файловая БД на данный момент бесперспективна, даже при работе на одном компе.
We are hard at work… for you. 
