|
|
|
Изменить идексацию массива элементов во время выполнения
|
|||
|---|---|---|---|
|
#18+
Собственно вопрос в теме. Как изменить идекцию массива управления во время выполнения программы? Поясню: в программе динамически создается массив из элементов, например MSFlexGrid, т.е. изначально есть MSFlexGrid1(0), далее с помощью процедуры Load(MSFlexGrid1(k)) можно создать любое количество этих таблиц (процедуры переключения между ними я уже написал), где k-счетчик. Предположим, что пользователь создал массив и с индексами 0,1,2,3,4. Пользователь по нажатию кнопки может удалить любой из массива с помощью процедуры UnLoad(MSFlexGrid1(i)), где i - номер удаляемого элемента из массива. Например, если i=2 у него остается массив с индексами 0,1,3,4. Как переидексировать этот массив, чтобы у него остался массив из 0,1,2,3 (т.е. изменить индексы для элементов 3 и 4 на 2 и 3 соответственно)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2009, 12:25 |
|
||
|
Изменить идексацию массива элементов во время выполнения
|
|||
|---|---|---|---|
|
#18+
sademСобственно вопрос в теме. Как изменить идекцию массива управления во время выполнения программы? Поясню: в программе динамически создается массив из элементов, например MSFlexGrid, т.е. изначально есть MSFlexGrid1(0), далее с помощью процедуры Load(MSFlexGrid1(k)) можно создать любое количество этих таблиц (процедуры переключения между ними я уже написал), где k-счетчик. Предположим, что пользователь создал массив и с индексами 0,1,2,3,4. Пользователь по нажатию кнопки может удалить любой из массива с помощью процедуры UnLoad(MSFlexGrid1(i)), где i - номер удаляемого элемента из массива. Например, если i=2 у него остается массив с индексами 0,1,3,4. Как переидексировать этот массив, чтобы у него остался массив из 0,1,2,3 (т.е. изменить индексы для элементов 3 и 4 на 2 и 3 соответственно)? Есть ведь наверное что - то типа коллекций(я не очень ориентируюсь во MSFlexGrid1), но индексацию массива менять если и можно, так в любом случае - не нужно. Если коллекций нет - достаточно массиву с данным индексом выставить значение в -1, например или типа того. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2009, 12:57 |
|
||
|
Изменить идексацию массива элементов во время выполнения
|
|||
|---|---|---|---|
|
#18+
SQL_Lamer, идею я понял, но в MSFlexGrid нет значения Value, можно конечно сделать свою индексацию используя Tag, но я думал есть возможность проще. А переидексация нужна, так как мне нужно согласовать элемент TabStrip (вкладки) и эти таблицы, т.е. чтобы по нажатию определенной вкладки открывалась соответсвующая ей таблица (что-то наподобии как реализовано в Exсel с его листами). Проблема в том, что TabStrip.Value при удалении одной из вкладок само установливает значение для всех вкладок в порядке возрастания, а MSFlexGrid свою индексаацию оставляет прежнюю (хотя фактически я пытаюсь согласовать различные свойства, TabStrip - единственный элемент с несколькими вкадками, а MSFlexGrid - массив элементов). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2009, 13:35 |
|
||
|
Изменить идексацию массива элементов во время выполнения
|
|||
|---|---|---|---|
|
#18+
sadem, Поищите еще. Уверен, можно обойтись без изменения индексов, так как действительно не есть гут. Вы в чем пишете? VB6 или VB.Net? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2009, 13:38 |
|
||
|
Изменить идексацию массива элементов во время выполнения
|
|||
|---|---|---|---|
|
#18+
SQL_Lamer, ну если я создаю тему в этом разделе, то естественно на VB6 (понимаю от чего вопрос, некоторые не туда свои топики закидывают). Мне просто кажется что индексы поменять массиву управления не получится (как ни печально). А по другому у меня идей сделать пока нет, т.к. TabStrip достаточно ограниченный элемент (в своих свойствах). Есть конечно идея "поддтягивать" выше идущие (по индексу) таблицы на место старых удаленных идексов, но как понимаете это достаточно долгая процедура, связанная с несколькими циклами и копированием всех данных, хотя в моем случае она применима, так предположительный объем данных в каждой таблице будет небольшой. Может кто-то еще заглянет в этот топик, посмотрим, может есть и другие решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2009, 14:41 |
|
||
|
Изменить идексацию массива элементов во время выполнения
|
|||
|---|---|---|---|
|
#18+
Можно вместо массива контролей взять их коллекцию и добавлять их (контроли) через ProgID и использовать методы Add и Remove. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 16:47 |
|
||
|
Изменить идексацию массива элементов во время выполнения
|
|||
|---|---|---|---|
|
#18+
просто динамическое создание элементов на форме надо делать в своей коллекции, соответственно, ключ у тебя будет свой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 16:52 |
|
||
|
Изменить идексацию массива элементов во время выполнения
|
|||
|---|---|---|---|
|
#18+
Что за класс MyControlCollection? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 16:54 |
|
||
|
Изменить идексацию массива элементов во время выполнения
|
|||
|---|---|---|---|
|
#18+
свой собственный конечно, где надо все и написать. я привел просто как пример ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 17:01 |
|
||
|
Изменить идексацию массива элементов во время выполнения
|
|||
|---|---|---|---|
|
#18+
ОК. На самом деле, правила Microsoft регламентируют это очень строгим образом, а именно, посредством двух коллекций: Licences и Controls: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 17:19 |
|
||
|
Изменить идексацию массива элементов во время выполнения
|
|||
|---|---|---|---|
|
#18+
Пример добавления двух ActiveX контролей (в нашем случае, MSFlexGrid), требующих лайсенса: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 18:04 |
|
||
|
Изменить идексацию массива элементов во время выполнения
|
|||
|---|---|---|---|
|
#18+
Можно использовать и обычный массив контролов. Достаточно в MyControlCollection хранить объекты, в которых связаны ссылки на таб и на элемент массива — по барабану какие у них там индексы. Пример с массивом меню: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2009, 14:57 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=35834642&tid=2161311]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 320ms |

| 0 / 0 |
