![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сделать содержимое ячейки DBGrid невидимым [D6]
mccop © (2004-10-19 11:19:00)По нажатию на кнопку нужно пробегаться по Query и если содержимое поля не удовлетворяет определенному условию, делать его невидимым, при этом не изменяя содержимое поля.
Что-то типа Field.DisplayText:='', но Field.DisplayText readonly к сожалению :((.
Подскажите варианты может какие...?
mccop (2004-10-19 13:55:00) [1]ок, всем спасибо
Vlad (2004-10-19 13:44:00) [2]
> Johnmen © (19.10.04 13:35) [18]
А можно не просто закрашивать ячейку, можно на ее месте рисовать какой нибудь красивый цветочек, чтоб дискомфорту меньше было :-)
Johnmen (2004-10-19 13:35:00) [3]
> Vlad © (19.10.04 13:06) [13]
Тогда уж OnGetText.
Просто я чувствую внутренний дискомфорт, когда смешивают рисование с сущностным содержимым...
Vlad (2004-10-19 13:31:00) [4]
> mccop (19.10.04 13:22) [15]
Ну как вариант тебе уже сказали - можно отключить прорисовку "ненужных" ячеек.
А вобще, лучше бы (наверное) заставить сервер ломать голову над возвращаемым набором данных, т.е. чтоб результат уже возвращался в том виде, котором надо.
Val (2004-10-19 13:22:00) [5]Не нужно от пользователя данные скрывать(он потом скажет - а яхочу потом ткнуть и посмотреть что же там - на сколько отличается от нужного, к примеру). Красьте строки/ячейки лучше.
mccop (2004-10-19 13:22:00) [6]2 jonmen
но ведь у меня то данные реальные из базы вибираются, что ж мне на каждое реальное поле а их там 31 (Месячный отчет) создавать калькулируемое?
Sergey13 (2004-10-19 13:10:00) [7]2mccop (19.10.04 11:19)
А зачем все это?
Vlad (2004-10-19 13:06:00) [8]
> Johnmen © (19.10.04 12:58) [12]
Простое, это если речь об одном поле, а если в этом "изврате" участвуют несколько полей, то что ж на каждое делать калькулируемый дубликат? :-)
Johnmen (2004-10-19 12:58:00) [9]Немного не то сказал...
По условию вопроса наиболее простое и понятное решение Ega23 © (19.10.04 11:22) [1]
mccop (2004-10-19 12:57:00) [10]>На самом деле узнать условие у юзверя и прорисовать грид заново, >а потом после отмены условия или выбора другого соответственно >прорисовать "в другом направлении".
Не совсем понял, что понимается под прорисовать и прорисовать в другом направлении, можно уточнить...?
Johnmen (2004-10-19 12:54:00) [11]Так проще и логичнее
DBGrid.Columns[<индекс твоей колонки>].Visible:=False;
Draught (2004-10-19 12:52:00) [12]
> mccop (19.10.04 12:16) [8]
> то есть нужно чтоб до нажатия на кнопку был стандартный
> обработчик события TDBGrid.OnDrawColumnCell, при нажатии
> на кнопку присваивать новый обработчик, в котором реализована
> ф-ция типа
> DBGrid.Canvas.Font.Color:=DBGrid.Canvas.Brush.Color;
> вызывать DBGrid.Repaint
> а потом (после удовлетворения интереса юзера) возвращать
> стандартный обработчик на TDBGrid.OnDrawColumnCell
> я правильно понял?
Ну типа того.
На самом деле узнать условие у юзверя и прорисовать грид заново, а потом после отмены условия или выбора другого соответственно прорисовать "в другом направлении".
mccop (2004-10-19 12:16:00) [13]то есть нужно чтоб до нажатия на кнопку был стандартный обработчик события TDBGrid.OnDrawColumnCell, при нажатии на кнопку присваивать новый обработчик, в котором реализована ф-ция типа
DBGrid.Canvas.Font.Color:=DBGrid.Canvas.Brush.Color;
вызывать DBGrid.Repaint
а потом (после удовлетворения интереса юзера) возвращать стандартный обработчик на TDBGrid.OnDrawColumnCell
я правильно понял?
Draught (2004-10-19 11:34:00) [14]
> Vlad © (19.10.04 11:31) [5]
>
> > Draught © (19.10.04 11:26) [3]
>
> Уж тогда до конца говори.
А ну, да-да, просто забыл добавить :)))))
DenK_vrtz (2004-10-19 11:32:00) [15]>По нажатию на кнопку нужно пробегаться по Query и если содержимое поля не удовлетворяет определенному условию, делать его невидимым, при этом не изменяя содержимое поля.
TField.OnGetText
Vlad (2004-10-19 11:31:00) [16]
> Draught © (19.10.04 11:26) [3]
Уж тогда до конца говори.
Это все должно происходить в событии TDBGrid.OnDrawColumnCell
А еще проще (там же): FillRect(Rect)
Draught (2004-10-19 11:30:00) [17]а условие можно так описывать и даже не бегать повсему ДБгриду
например про дату
if DBGrid.DataSource.DataSet.FieldByName('FINDATE').AsDateTime>=Date then
begin
DBGrid.Canvas.Font.Color:=DBGrid.Canvas.Brush.Color;
end;
Draught (2004-10-19 11:26:00) [18]
DBGrid.Canvas.Font.Color:=DBGrid.Canvas.Brush.Color;
вот так вот должно получиться
Draught (2004-10-19 11:25:00) [19]цвет текста не пробовал менять под цвет поля - тоже не видимое будет )
DBGrid2.Canvas.Font.Color:=<цвет>
Ega23 (2004-10-19 11:22:00) [20]CalculatedField тебе поможет