Всем, кто знаком с "VSFlexGrid"

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Всем, кто знаком с "VSFlexGrid"

Сообщение sergey-911 » 30.03.2005 (Ср) 0:26

Заполняю таблицу так (прочитал в умной толстой книжке):

Код: Выделить всё
Option Explicit
Dim vData As Variant

Private Sub Form_Load()

    vData = Empty

    Dim rs As ADODB.Recordset
    Dim cn As ADODB.Connection
   
    Set cn = New ADODB.Connection
    cn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\ZapKniga\ZapKniga.mdb;")

    Set rs = cn.Execute("SELECT * FROM ElPhones ORDER BY ElPhones.TELEPHONE")
   
    Me.VSFlexGrid1.Clear

    vData = rs.GetRows
   
    rs.Close
    Set rs = Nothing
    Set cn = Nothing

    VSFlexGrid1.BindToArray vData

End Sub



Таблица заполняется очень быстро, но почему-то не срабатывает сортировка, при нажатии на столбец.

Если вместо
Код: Выделить всё
    vData = rs.GetRows
   
    rs.Close
    Set rs = Nothing
    Set cn = Nothing

    VSFlexGrid1.BindToArray vData

написать
Код: Выделить всё
    Set VSFlexGrid1.DataSource = rs

    Set VSFlexGrid1.DataSource = Nothing
    rs.Close
    Set rs = Nothing
    Set cn = Nothing

- все в порядке. Сортировка срабатывает, но таблица заполняется в несколько раз медленее. Но все-равно, гораздо быстрее, нежели ее заполнять в цикле русками.

Уважаемые, в чем проблеа? Помогите пожалуйста разобраться. Хотелось бы использовать первый спрособ загрузки таблицы.

Еще не могу разобраться, как в коде сделать так, чтобы выделялась строка, удовлетворяющая определенному критерию, к примеру - идентификатор, в столбце, скрытом от пользователя?
Неужели перебирать все записи в столбце, а потом
Код: Выделить всё
VSFlexGrid1.toprow

Должен ведь в этом объекте быть свой механизм поиска, ведь при нажатии на символ на клавиатуре в VSFlexGrid курсор перемещается к первому значению столбца, удовлетворябщему данному критерию.

Извиняюсь за назойливость, еще не получается перейти к записи, на которой расположен курсор, тоже испольхую Toprow, хотя в ListView есть такой механизм!

Жду от Вас помощи, буду признателен любой информации.
С уважением, Сергей.

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Сообщение Чудик » 30.03.2005 (Ср) 7:21

При каких-либо операциях, производимых с Grid, попробуй отключать на время их выполнения ее видимость. Иногда это помогает увеличить скорость процесса обработки алгоритма.
Все остальные штучки я реализовывал типа того, как было описано выше. К сожалению, по-другому не умею!
Век живи - век учись!
www.detal-plast.narod.ru

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 30.03.2005 (Ср) 18:43

Спасибо конечно, но видимость таблицы не в счет. При заполнении грида через DataSource это не актуально. Есть ли еще соображения по этому поводу?
С уважением, Сергей.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 193

    TopList