Выбор cxGrid — избегайте выбора одного конкретного столбца

Когда вы выбираете строку в cxGrid, выделяется вся строка (меняет цвет на синий). Как я могу сказать сетке, чтобы она не выбирала записи из определенного столбца, т.е. оставляла его бесцветным? Я попытался использовать afterscroll набора данных:

cxGrid1dbTableView1.GetColumnByFieldName('MYFIELD').Focused := True;

Но не работает.....


person user3181689    schedule 03.02.2014    source источник
comment
Чего вы пытаетесь достичь? Выбрать только несколько ячеек из записи? Или визуально исключить столбцы из вашего выбора? Потому что я не думаю, что сетка способна выбрать несколько ячеек, когда вы нажимаете на строку.   -  person R-D    schedule 03.02.2014
comment
визуально исключить столбец из моего выбора   -  person user3181689    schedule 03.02.2014
comment
Затем используйте ответ Стефана Глиенке или его вариант.   -  person R-D    schedule 03.02.2014
comment
@ Роальд ван Дорн - я использую стиль для этой конкретной колонки. Я хочу исключить его только из выбора. Я не могу изменить его стиль.   -  person user3181689    schedule 03.02.2014


Ответы (1)


Используйте событие OnCustomDrawCell столбцов, которые вы хотите изменить, и поместите внутрь этот код:

if AViewInfo.Selected then
begin
  ACanvas.Brush.Color := clWindow;
  ACanvas.Font.Color := clWindowText;
end;

В моем случае я не использую темы, поэтому цвета совпадают. Если вы используете что-то другое, вы должны изменить их соответствующим образом.

person Stefan Glienke    schedule 03.02.2014
comment
Я уже использую cxstyle для этого поля, поэтому не могу использовать OnCustomDrawCell. Это основная причина, по которой я не хочу, чтобы поле было выбрано, потому что оно не отображает цвет текста стиля должным образом, когда оно выбрано. - person user3181689; 03.02.2014
comment
В чем проблема? Затем назначьте Color и Font.Color назначенного cxStyle. - person Stefan Glienke; 03.02.2014
comment
OnCustomDrawCell мало что даст, если вы используете стили. Я даже не знаю, называется ли он до сих пор. Но вы можете переопределить OnGetContentStyle и просто вернуть другой стиль для столбцов, которые вы хотите исключить. - person R-D; 03.02.2014
comment
@RoaldvanDoorn Я думаю, вы путаете стиль и скин. Если вы используете стиль (TcxStyle), OnCustomDrawCell все еще вызывается. Но это может быть не так при использовании скиннинга. - person Stefan Glienke; 03.02.2014
comment
@ Стефан Глиенке - вы не можете назначить стиль холсту. - person user3181689; 03.02.2014
comment
Без шуток... но можно присвоить цвет стиля цвету кисти холста. - person Stefan Glienke; 03.02.2014
comment
Или вы можете переопределить OnGetContentStyle ваших столбцов и вернуть правильно определенный стиль с разными цветами. - person R-D; 03.02.2014