Большой Воронежский Форум

Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел.
Вернуться   Большой Воронежский Форум » Компьютеры и все, что с ними связано » » Программирование
Философия, технологии, алгоритмы!

Ответ
 
Опции темы
Старый 08.05.2012, 06:36   #1   
///
 
Аватар для -=Женек=-
 
Сообщений: 9,724
Регистрация: 02.04.2005
Возраст: 43

-=Женек=- вне форума Не в сети
Как в StringGrid запретить выделение мышкой?

Хочу выделять строки целиком только программно.
Как запретить делать это по нажатию мыши?
  Ответить с цитированием
Старый 08.05.2012, 13:08   #2   
Registered User
 
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56

Hopkroft вне форума Не в сети
Цитата:
Сообщение от -=Женек=- Посмотреть сообщение
Хочу выделять строки целиком только программно.
Как запретить делать это по нажатию мыши?
А разве StringGrid так может делать? Тебе нужен скорее всего ListBox. Делаешь там несколько колонок. И можешь выделять произвольные строчки.
StringGrid, вроде как так не умеет делать. Он может выделять только диапазон.
P.S. я думаю будет лучше если каждый человек с подобным вопросом будет присылать скриншот с приложением, из которого он хотел бы повторить интерфейсное решение. Т.к. в этому случае будет легче давать советы

Последний раз редактировалось Hopkroft; 09.05.2012 в 01:13.
  Ответить с цитированием
Старый 09.05.2012, 10:43   #3   
///
 
Аватар для -=Женек=-
 
Сообщений: 9,724
Регистрация: 02.04.2005
Возраст: 43

-=Женек=- вне форума Не в сети
Hopkroft,
Почитав то что вы написали, хочется спросить, вы были трезв?

Цитата:
StringGrid, вроде как так не умеет делать.
Ну если я пишу "хочу выделять только программно", значит у меня работают оба варианта - и мышка и программа. А проблема именно в запрете мыши.

Цитата:
Он может выделять только диапазон.
А если пофантазировать?
Col1=0,Col2=5, Row1=3,Row2=3
Получится строка?
Цитата:
P.S. я думаю будет лучше если каждый человек с подобным вопросом будет присылать скриншот с приложением, из которого он хотел бы повторить интерфейсное решение.
Объясните, как на скриншоте изобразить отсутствие реакции на нажатие мыши и выделение по команде из программы?

Цитата:
Тебе нужен скорее всего ListBox.
не подойдет.
  Ответить с цитированием
Старый 09.05.2012, 11:37   #4   
Registered User
 
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56

Hopkroft вне форума Не в сети
Цитата:
Сообщение от -=Женек=- Посмотреть сообщение
Hopkroft,
Почитав то что вы написали, хочется спросить, вы были трезв?
Какой вопрос, такой ответ Я бы не стал писать всякие пакости, когда люди хотят вам помочь. Это совет на будущее

Цитата:
Сообщение от -=Женек=- Посмотреть сообщение
Ну если я пишу "хочу выделять только программно", значит у меня работают оба варианта - и мышка и программа. А проблема именно в запрете мыши.
Самое простое поставить свойство Enabled в False, тогда проблемы с мышой можно забыть.

Цитата:
Сообщение от -=Женек=- Посмотреть сообщение
А если пофантазировать?
Col1=0,Col2=5, Row1=3,Row2=3
Получится строка?
Где код? Что это ещё за свойства Col1, Col2? Вы наверное хотели написать
StringGrid1.Selection.Left:=0;
StringGrid1.Selection.Top:=2;
...
и т.д. угадал?
Но в этом случае выделиться диапазон! Как я уже и говорил.

Цитата:
Сообщение от -=Женек=- Посмотреть сообщение
Объясните, как на скриншоте изобразить отсутствие реакции на нажатие мыши и выделение по команде из программы?
Понятие выделять строки целиком, слишком размытое, хотелось увидеть что вы под этим понимаете.

P.S. а вообще, я бы обрабатывал у StringGrid событие OnDrawCell, и в этом событии сам бы отрисовывал нужным цветом интересующие меня ячейки.
Вложения
Тип файла: zip StringTest.zip (556.2 Кб, 6 просмотров)

Последний раз редактировалось Hopkroft; 09.05.2012 в 12:08.
  Ответить с цитированием
Старый 09.05.2012, 12:18   #5   
///
 
Аватар для -=Женек=-
 
Сообщений: 9,724
Регистрация: 02.04.2005
Возраст: 43

-=Женек=- вне форума Не в сети
Цитата:
Где код? Что это ещё за свойства Col1, Col2? Вы наверное хотели написать
StringGrid1.Selection.Left:=0;
StringGrid1.Selection.Top:=2;

и т.д. угадал?
Но в этом случае выделиться диапазон! Как я уже и говорил.


Да господи...Вы писатель или читатель?
Если начало диапазона совпадает с концом диапазона, значит выделится одна строка, это понятно?

ControlStringGrid->SelectCells(0,object_number,3,object_number);
  Ответить с цитированием
Старый 09.05.2012, 13:10   #6   
Registered User
 
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56

Hopkroft вне форума Не в сети
Цитата:
Сообщение от -=Женек=- Посмотреть сообщение
Да господи...Вы писатель или читатель?
Если начало диапазона совпадает с концом диапазона, значит выделится одна строка, это понятно?
ControlStringGrid->SelectCells(0,object_number,3,object_number);
Не упоминай в суе
Тебе проще будет убрать у своего Грида возможность выделения в редакторе компонентов. Далее обрабатывай событие OnDrawCell, где при прорисовке определённой строке ты будешь выделять её соответствующим цветом.
Я не вижу здесь никаких проблем. Вот тебе и маленький пример.
Вложения
Тип файла: zip StringTest.zip (606.8 Кб, 7 просмотров)
  Ответить с цитированием
Старый 06.06.2012, 18:59   #7   
Форумец
 
Аватар для Spectator
 
Сообщений: 39,865
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Флуд потер. По теме - в гриде вешаешься на OnSelectCell, проверяешь что выделили, если тебе не нравится, скидывашь выделение.
  Ответить с цитированием
Старый 06.06.2012, 21:04   #8   
Registered User
 
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56

Hopkroft вне форума Не в сети
Цитата:
Сообщение от Spectator Посмотреть сообщение
Флуд потер. По теме - в гриде вешаешься на OnSelectCell, проверяешь что выделили, если тебе не нравится, скидывашь выделение.
я ему уже написал решение. OnSelectCell не подойдёт. т.к. выделять ему нужно программно и конкретную строчку. т.е. он что-то типа отладчика делает. где каждая строчка выделяется в зависимости от условия программы.
  Ответить с цитированием
Старый 06.06.2012, 21:31   #9   
Форумец
 
Аватар для Spectator
 
Сообщений: 39,865
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от Hopkroft Посмотреть сообщение
я ему уже написал решение. OnSelectCell не подойдёт. т.к. выделять ему нужно программно и конкретную строчку. т.е. он что-то типа отладчика делает. где каждая строчка выделяется в зависимости от условия программы.
Я написал как ЗАПРЕТИТЬ выделять больше одной строки. Может не так понял - что нужно.
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind