Как запретить множественный select в MSFlexGrid?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Как запретить множественный select в MSFlexGrid?

Сообщение Leon_ » 15.06.2004 (Вт) 10:03

Хочу в элементе управления MSFlexGrid запретить выбор нескольких сразу строк. А как этого добиться – не знаю. :?
Помогите?

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 15.06.2004 (Вт) 10:36

Похоже, что никак. Но типа обойти это можно. Во-первых, выставь: .SelectionMode = flexSelectionByRow, а во-вторых, всегда обрабатывай строку, являющуюся стартовой для выделения - .Row. Забей на .RowSel, пусть хоть все выделят, учитываться будет только изначальная.

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 15.06.2004 (Вт) 10:45

Ага, учту :)
Т.е. запретить выделение множества строк нельзя в FlexGrid.. Некрасиво.
А может какой нибудь обработчик для FlexGrid_Click хитрый поставить, и там сбрасывать "лишнее"? :? Подкиньте идею?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.06.2004 (Вт) 10:53

Допустим, можно просто в свойствах грида задать, чтобы выделение никак не показывалось (HighLight=0), а при SelectionChange просто менять CellBackColor
Lasciate ogni speranza, voi ch'entrate.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 15.06.2004 (Вт) 11:25

Достаточно на любой SelChange ставить RowSel = Row.

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 15.06.2004 (Вт) 11:37

Гениально! :D
Код: Выделить всё
Private Sub objGridFree_SelChange()
    Me.ActiveControl.RowSel = Me.ActiveControl.Row
End Sub

Спасибо!
.. правда, иногда немного "моргает" при таком выделении. Может, какой-нибудь Redraw выставить?

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 15.06.2004 (Вт) 14:09

Можно.
...
.Redraw = False
.RowSel = .Row
.Redraw = True
...

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 15.06.2004 (Вт) 16:38

OK, стало получше 8)

Только у меня опять вопросы про FlexGrid.
Вот свойство ColIsVisible -- в Help’e сказано “Returns or sets a value”, а на практике оказывается только read-only и программно не устанавливается…

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.06.2004 (Вт) 17:04

Оно и не должно устанавливаться. Если так написано, это в хелпе ошибка, это свойство служит для проверки, является ли столбец видимым (когда ты их скроллишь).
Чтобы сделать столбец невидимым, задай ширину равной 0.
Lasciate ogni speranza, voi ch'entrate.

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 15.06.2004 (Вт) 18:02

:shock: Если в хелпе ошибка, тогда кому же остается верить?! Кошмар.

Ширину задаю 0, все ОК, спасибо


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

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

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

    TopList  
cron