|
|
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
Есть списко с мультивыбором. Щелкаем по строкам - выделяем записи, нажимаем кнопку, которая открывает отчет с выделенными записями следующим образом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Вопросы: 1. Каков предел количства записей, запихиваемых в конструкцию stLinkCriteria = "MyKeyField IN (" & strWhere & ")" . Что он есть - в этом я убедился, но вот оценить предел не смог. 2. Как отменить выделение записи в списке при превышении предела. Код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 10:29:56 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
The maximum length of the wherecondition argument is 32,768 characters (unlike the Where Condition action argument in the Macro window, whose maximum length is 256 characters). Хотя, если подумать, то это ж скока всякой-всячины надо засунуть, шобы превысить 32 тыщи символов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 11:00:39 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
авторХотя, если подумать, то это ж скока всякой-всячины надо засунуть, шобы превысить 32 тыщи символов... Ну так юзер в списке из 1000 строк становится на 1 строку, жмет шифт, на последнюю строку - и готова ошибка Спасибо, а то в долбанной справке никак не мог найти ответа. А по второму вопросу есть мнения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 11:18:58 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
Trim тебе поможет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 11:21:59 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
авторTrim тебе поможет Да отсечь-то не проблема - проблема показать это в самом списке - т.е. не дать выделять строки в списке больше, чем надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 11:30:58 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
это ж надо умудриться столько выбрать, что в IN не влезет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 11:33:46 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
Private Sub Список1_Click() Debug.Print Список1.ItemsSelected.Count End Sub Private Sub Список1_KeyUp(KeyCode As Integer, Shift As Integer) Debug.Print Список1.ItemsSelected.Count End Sub (с выражением лица) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 11:40:20 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
надо лишь количесво выделенных строк умножить на максимальное количество включаемых в строку символов (первой процедурой в первом посте) и сравнить с 32тыщами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 11:43:43 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
Тень Виктошинадо лишь количесво выделенных строк умножить на максимальное количество включаемых в строку символов (первой процедурой в первом посте) и сравнить с 32тыщами... (за минусом прочих символов запроса) я так давно уже думаю. (сомневался - может это не тень, а кобольт?) вчера убедился окончательно - "оно" есть. а севодни она сама себе имя дала... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 11:49:04 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
2Victosha&Co КАК НЕ ДАТЬ ЮЗЕРУ ВЫДЕЛЯТЬ СТРОК В СПИСКЕ БОЛЬШЕ ЧЕМ n????? Че тут непонятного в вопросе???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 11:50:54 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
Andrey Sk 2Victosha&Co КАК НЕ ДАТЬ ЮЗЕРУ ВЫДЕЛЯТЬ СТРОК В СПИСКЕ БОЛЬШЕ ЧЕМ n????? Че тут непонятного в вопросе???? чё орать - не дать выделить нельзя события нет,можно после выделения выдать предупреждение или оставить по любому алгоритму n строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 11:55:25 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
Извиняйте, если что не так 2Shuhard Верю на слово ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 12:05:56 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
Дааааа, ДААААА, я такое, я большооооое ))))))))))))) з.ы. Тьфу на вас! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 12:08:22 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
не дать выделить - можно - надо задействовать принудительную отмену выделения Список1.Selected(ItemNumber) = False управлять этим можно, задействовав промежуточный массив "ранее выбранных номеров строк". Код писать не буду - в две минуты не напишу. Если интерес сохранится - ввечеру. ЗЫ Ваащето там усе достаточно "прозрачно" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 12:21:03 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
2Victosha Беру свои слова обратно, Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 13:11:15 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
И в заключение темы: Допустим мы определили лимит выделенных строк - L Тогда ставим такой код для отката выделения Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 16:35:04 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
вообще-то именно подобного сорта код в данном случае лучше поместить на событие Exit из контрола. В afterUpdate он не будет работать как ожидается для случая последовательного выбора методом нажатия клавиши со стрелкой вверх/вниз при одновременно нажатой клавише шифт. Еще одна деталь - ListIndex при вышеописанном выделении принимает значение номера строки, с которой начинается подобный "сплошной выбор"... поэтому свою мысль о "промежуточном хранилище ранее выбранного" пока оставлю при себе. (с выражением лица) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 17:10:03 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
де жа вю /topic/81199&hl=Selected ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 17:42:17 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
поковырял... получилось вот что: 1)"мысль" про про массив - в лоб не проходит. И, в целом, больше походит на глупость... 2) для режима простого выделения достаточно было бы "одиночной проверки без цикла" 3) для режима со связным выбором - код Andrey Sk или его вариации - практически единственный разумный выбор (на мой взгляд). Попытки "улучшить " очевидно усложняют ситуацию и, если и способны завершиться успехом, то немалой ценой... Замечания по применению для режима со связным выбором. По моим наблюдениям, получилось, что перехват надо проводить в трех событиях: KeyDown, Click и MouseMove (а вот от Exit, так же как и от afterUpdate предлагаю отказаться... ). При этом первые два "универсальны" по отношению к режиму выбора. Последний - специфичен именно для связного выбора. KeyDown работает в случае "сплошного выделения" стрелками ввер/вниз. Click работает при одиночных выделениях мышью в обоих режимах и при клавиатурном выделении пробелом в режиме простого множественного выбора. Кроме того, в режиме связанного выбора он работает при отпускании клавиши мыши после массового сплошного выделения мышью, при условии, что список на момент отпускания клавиши мыши остается текущим активным контролом для формы. MouseMove - про него хочется сказать отдельно... В режиме связного выбора начнем производить массовый выбор следующим способом - нажав левую клавишу мыши и не отпуская ее протянуть вверх или вниз по списку, выделив сплошную область строк. В момент протягивания область выделения в окне списка расширяется, а ItemsSelected.Count остается неизменным. а) если далее просто отпустить клавишу мыши - произойдет Click. б) Если не отпуская клавишу мыши, нажать Tab, то произойдет следующее - контрол отменно потеряет фокус и тот переместится на следующий контрол. Формально говоря, и afterUpdate и Exit при этом вызываются. Однако, поскольку ItemsSelected до отпускания мыши не сформирован, то проверять по существу нечего. В момент же отпускания мыши происходит именно "отложенный" MouseMove на уже покинутом контроле. Сам код у меня получился несущественно модифицированным по сравнению с предложенным Andrey Sk. На мой взгляд, все это естественно оформляется в виде класса. Если же настаивать на функции - то получится что-то такое: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. (с выражением лица) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2004, 04:49:54 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
2 Victosha Мож книжку напишем в соавторстве ;-)) Списки - вообще мой любимый контрол в аксе, я еще много про них знаю 8-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2004, 12:29:26 |
|
||
|
список с мультивыбором
|
|||
|---|---|---|---|
|
#18+
Andrey Sk 2 Victosha Мож книжку напишем в соавторстве ;-)) Списки - вообще мой любимый контрол в аксе, я еще много про них знаю 8-) у меня с простым чтением пробемы, а уж с письмом - совсем никуда. Так что, напишешь - почитаю с удовольствием. Могу потестировать при случае чаво ненужного. Писать не смогу. В общем-то, я ничего не знаю, о чем писать следовало бы... А что знаешь - это хорошо. Может, расскажешь при случае... ЗЫ1 В действительности, абсолютно чистого поведения в KeyDown у меня не получилось, а доковыривать под утро уже не было желания... Да и других вопросов тоже осталось... было интересно посмотреть - раньше именно это не ковырял... так что - спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2004, 12:51:51 |
|
||
|
|

start [/forum/search_topic.php?author=ansea&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
6ms |
get first new msg: |
3ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 5401ms |
| total: | 5536ms |

| 0 / 0 |
