Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2009, 12:38   #1
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию Как сделать одну из колонок DBGridEh недоступной?

Привет всем! Подскажите пожалуйста, как сделать одну из колонок в DBGridEh не доступной? Т.е. нужно сделать так, чтобы она никогда не принимала фокус, так сказать была как индикатор (самая крайняя слева колонка). В общем туда планируется помещать изображения в зависимости от значения и следовательно фокус там не зачем. Вообще задумка такая же как справочники или журналы в программе 1С. Т.е. там колонка с изображением синих либо желтых папочек выступает в роли индикатора.
Подскажите пожалуйста! Заранее спасибо!
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 27.11.2009, 12:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ты посмотри есть ли в его свойстве Columns[] свойство Enabled
Или Readonly
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.11.2009, 13:04   #3
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

Enabled - нет, а Readonly - есть, только толку от этого Ридонли мало, даже когда ставлю Readonly:=true, все равно эта колонка принимает фокус. Хотя может я не так объяснил или вы меня не поняли Мне нужно не только сделать так чтобы в ячейке нельзя было редактировать данные, но еще сделать так чтобы она вообще не принимала фокус. По другому я просто не знаю как объяснить.

Этот пример из 1С:



Здесь самая левая колонка отображает иконки и никогда не принимает фокус, т.е. если даже по ней щелкнуть, она не станет выделенной. Вот мне и надо добиться такого же результата в DBGridEh.
Водку мы пьем для запаха - а дури нам своей хватает!

Последний раз редактировалось Stilet; 27.11.2009 в 13:47.
Vit@L вне форума Ответить с цитированием
Старый 27.11.2009, 13:54   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ясно. Одно я точно могу сказать
В событии OnCellClick анализируй по какой колонке кликнуло, и если что запрещай переход.
Но как запретить переход я не знаю. Никогда этим не страдал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.11.2009, 14:20   #5
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

Stilet, спасибо большое, но я тоже не знаю как запретить переход
Так что вопрос остается открытым. Ребята, кто знает, подскажите пожалуйста.
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 27.11.2009, 14:27   #6
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

можно еще на прорисовке DrawColumnCell проверять на фокус и не закрашивать его..
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 27.11.2009, 14:35   #7
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

quit, а можно пожалуйста пример?
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 27.11.2009, 14:54   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Видимо имелось ввиду:
Код:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 if Column.Field.DisplayName='Поле1' then
  DBGrid1.Canvas.Brush.Color:=DBGrid1.Color;
end;
Но помему это ничего не даст...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.11.2009, 15:02   #9
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

Stilet, я вот тоже думаю что это ничего не даст, так как это просто заменит цвет выделенной ячейки, а не запретит фокус.
У кого-нибудь есть еще варианты?
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 27.11.2009, 15:04   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а не запретит фокус.
Ты всетки попробуй. Вкупе с ReadOnly это хотя бы видимость неприкосновенности колонки попытается сделать...
может и останешся доволен )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сохранять ширину колонок у Grid adigozalov БД в Delphi 1 27.03.2009 15:30
Как в VB6 получить доступ к содержимому колонок в ListBox'е? AndreyMust19 Помощь студентам 3 21.03.2009 00:06
Помогите сделать одну фишку! eldar Работа с сетью в Delphi 1 04.08.2008 14:34
Нужно сделать одну задачу на ЯП Асемблер Rumba Помощь студентам 3 05.06.2007 19:42
как управлять звуком правой и левой колонок с помощью TrackBar? ZhekON Win Api 8 12.04.2007 14:50