Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сделать содержимое ячейки 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 тебе поможет


Наверх

Титульная страница Поиск, карта сайта Написать письмо