Вниз
Скачать: CL | DM;

Сделать содержимое ячейки DBGrid невидимым   Найти похожие ветки 

← →
mccop   (2004-10-19 11:19) [0]

По нажатию на кнопку нужно пробегаться по Query и если содержимое поля не удовлетворяет определенному условию, делать его невидимым, при этом не изменяя содержимое поля.
Что-то типа Field.DisplayText:="", но Field.DisplayText readonly к сожалению :((.

Подскажите варианты может какие...?


← →
Ega23 ©   (2004-10-19 11:22) [1]

CalculatedField тебе поможет


← →
Draught ©   (2004-10-19 11:25) [2]

цвет текста не пробовал менять под цвет поля - тоже не видимое будет )

DBGrid2.Canvas.Font.Color:=<цвет>


← →
Draught ©   (2004-10-19 11:26) [3]

DBGrid.Canvas.Font.Color:=DBGrid.Canvas.Brush.Color;

вот так вот должно получиться


← →
Draught ©   (2004-10-19 11:30) [4]

а условие можно так описывать и даже не бегать повсему ДБгриду

например про дату

if DBGrid.DataSource.DataSet.FieldByName("FINDATE").AsDateTime>=Date then
begin
DBGrid.Canvas.Font.Color:=DBGrid.Canvas.Brush.Color;
end;


← →
Vlad ©   (2004-10-19 11:31) [5]


> Draught ©   (19.10.04 11:26) [3]

Уж тогда до конца говори.
Это все должно происходить в событии TDBGrid.OnDrawColumnCell
А еще проще (там же): FillRect(Rect)


← →
DenK_vrtz ©   (2004-10-19 11:32) [6]

>По нажатию на кнопку нужно пробегаться по Query и если содержимое поля не удовлетворяет определенному условию, делать его невидимым, при этом не изменяя содержимое поля.

TField.OnGetText


← →
Draught ©   (2004-10-19 11:34) [7]


> Vlad ©   (19.10.04 11:31) [5]
>
> > Draught ©   (19.10.04 11:26) [3]
>
> Уж тогда до конца говори.


А ну, да-да, просто забыл добавить :)))))


← →
mccop   (2004-10-19 12:16) [8]

то есть нужно чтоб до нажатия на кнопку был стандартный обработчик события  TDBGrid.OnDrawColumnCell, при нажатии на кнопку присваивать новый обработчик, в котором реализована ф-ция типа
DBGrid.Canvas.Font.Color:=DBGrid.Canvas.Brush.Color;
вызывать DBGrid.Repaint
а потом (после удовлетворения интереса юзера) возвращать стандартный обработчик на TDBGrid.OnDrawColumnCell
я правильно понял?


← →
Draught ©   (2004-10-19 12:52) [9]


> mccop   (19.10.04 12:16) [8]
> то есть нужно чтоб до нажатия на кнопку был стандартный
> обработчик события  TDBGrid.OnDrawColumnCell, при нажатии
> на кнопку присваивать новый обработчик, в котором реализована
> ф-ция типа
> DBGrid.Canvas.Font.Color:=DBGrid.Canvas.Brush.Color;
> вызывать DBGrid.Repaint
> а потом (после удовлетворения интереса юзера) возвращать
> стандартный обработчик на TDBGrid.OnDrawColumnCell
> я правильно понял?


Ну типа того.
На самом деле узнать условие у юзверя и прорисовать грид заново, а потом после отмены условия или выбора другого соответственно прорисовать "в другом направлении".


← →
Johnmen ©   (2004-10-19 12:54) [10]

Так проще и логичнее
DBGrid.Columns[<индекс твоей колонки>].Visible:=False;


← →
mccop   (2004-10-19 12:57) [11]

>На самом деле узнать условие у юзверя и прорисовать грид заново, >а потом после отмены условия или выбора другого соответственно >прорисовать "в другом направлении".

Не совсем понял, что понимается под прорисовать и прорисовать в другом направлении,  можно уточнить...?


← →
Johnmen ©   (2004-10-19 12:58) [12]

Немного не то сказал...
По условию вопроса наиболее простое и понятное решение Ega23 ©   (19.10.04 11:22) [1]


← →
Vlad ©   (2004-10-19 13:06) [13]


> Johnmen ©   (19.10.04 12:58) [12]

Простое, это если речь об одном поле, а если в этом "изврате" участвуют несколько полей, то что ж на каждое делать калькулируемый дубликат? :-)


← →
Sergey13 ©   (2004-10-19 13:10) [14]

2mccop   (19.10.04 11:19)
А зачем все это?


← →
mccop   (2004-10-19 13:22) [15]

2  jonmen
но ведь у меня то данные реальные из базы вибираются, что ж мне на каждое реальное поле а их там 31 (Месячный отчет) создавать калькулируемое?


← →
Val ©   (2004-10-19 13:22) [16]

Не нужно от пользователя данные скрывать(он потом скажет - а яхочу потом ткнуть и посмотреть что же там - на сколько отличается от нужного, к примеру). Красьте строки/ячейки лучше.


← →
Vlad ©   (2004-10-19 13:31) [17]


> mccop   (19.10.04 13:22) [15]

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


← →
Johnmen ©   (2004-10-19 13:35) [18]


> Vlad ©   (19.10.04 13:06) [13]


Тогда уж OnGetText.
Просто я чувствую внутренний дискомфорт, когда смешивают рисование с сущностным содержимым...


← →
Vlad ©   (2004-10-19 13:44) [19]


> Johnmen ©   (19.10.04 13:35) [18]

А можно не просто закрашивать ячейку, можно на ее месте рисовать какой нибудь красивый цветочек, чтоб дискомфорту меньше было :-)


← →
mccop   (2004-10-19 13:55) [20]

ок, всем спасибо



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.026 c
3-1097746856
Настенька
2004-10-14 13:40
2004.11.14
поле Integer


3-1097930940
TSL
2004-10-16 16:49
2004.11.14
Проблема с полем Image в mssql2000


3-1097573309
V l a d i m i r
2004-10-12 13:28
2004.11.14
Инсталляшка устанавливает BDE в исходный каталог :(


3-1097504958
Megabyte
2004-10-11 18:29
2004.11.14
Опции индекса в Paradox


4-1097004335
Comp
2004-10-05 23:25
2004.11.14
Не появляются подсказки TOOLTIP на TOOLBAR




   Наверх