Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Вниз

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

Форум: "Базы";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.031 c
3-1098063832
sanek
2004-10-18 05:43
2004.11.14
как создать таблицу с полем memo для внесения туда текстовых данн


1-1099384385
WondeRu
2004-11-02 11:33
2004.11.14
Assert... Зачем он нужен???


14-1098795070
vidiv
2004-10-26 16:51
2004.11.14
Помогите пожалуйста перевести на си


14-1098623973
Verg
2004-10-24 17:19
2004.11.14
А какой сегодня церковный празник?


6-1094637858
Gear
2004-09-08 14:04
2004.11.14
UDP порт 5555 с заданным IP в сети или нет?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский