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

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

Цвет ячейки в DBGrid или RxDBGrid [D7, MSSQL]


Страницы:   1 2

samalex ©   (2003-12-11 13:06:00) 

Уважаемые знатоки!!!

Как можно устанавливать программно цвет фона и шрифта для заданной ячейки DBGrid или RxDBGrid?


samalex   (2003-12-19 11:39:00) [1]

Sandman25 ©
Какое - подробнее можно?


Плохиш_   (2003-12-19 11:36:00) [2]

>samalex (19.12.03 11:02) [20]

Если работает, то "да"


Sandman25   (2003-12-19 11:35:00) [3]

[26] samalex (19.12.03 11:29)

Вы правы. Я и забыл, что использую дургое событие :(


samalex   (2003-12-19 11:29:00) [4]

Sandman25 ©
Нет, если использовать событие DBDrawColumnCell, для DBGridEh тоже самое, не работает ...


Sandman25   (2003-12-19 11:19:00) [5]

[24] samalex (19.12.03 11:16)

Странно. Может, rxDbgrid как-то некорректно работает.
Только что проверил для DBGridEh - после изменения все корректно, грид перерисовался (и строка изменила свой цвет), даже если часть грида была закрыта.


samalex   (2003-12-19 11:16:00) [6]

Sandman25 ©
Я не хотел никого обидеть, сейчас попробовал Post вместо UpdateRecord - тоже самое...


Sandman25   (2003-12-19 11:11:00) [7]

[22] samalex (19.12.03 11:09)

Я никогда не использовал UpdateRecord вместо Post...
И никогда не имел проблемы с перерисовкой грида...
Если не хотите даже попробовать совет, зачем спрашиваете?


samalex   (2003-12-19 11:09:00) [8]

Sandman25 ©
А UpdateRecord чем не устраивает. Тем более, что данные пишутся. Проблема в другом ...


Sandman25   (2003-12-19 11:05:00) [9]

[20] samalex (19.12.03 11:02)

Нужен Post для записи данных.


samalex   (2003-12-19 11:02:00) [10]

Плохиш_
У меня есть функция, которая записывает данные во временную таблицу RxMemoryData, к которой через DataSourse подцеплен DBGid.
Я поставил
with RxMemoryData do
begin
append;
FieldByName("NumPP").AsInteger:=i;
FieldByName("Description").AsString:=PrPoint[i-1].Description;
UpdateRecord;
DBGrid1.Invalidate;
end;
Уж не знаю, правильно?


Плохиш_   (2003-12-19 10:51:00) [11]


> samalex (18.12.03 16:09) [17]
> Плохиш_
> TDBGrid.Invalidate - как его применять, в таймере?

Там, где тебе надо грид обновлять


samalex   (2003-12-19 10:46:00) [12]

MV
Спасибо, установил библиотеку EhLib. Сразу двойные заголовки сделал.
Но ... не понял, как цвет ячейки ставится, в примерах что-то не понятно.


samalex   (2003-12-18 16:09:00) [13]

Плохиш_
TDBGrid.Invalidate - как его применять, в таймере?


MV   (2003-12-18 16:09:00) [14]

Библиотека EhLib от Дмитрия Большакова. Просто используешь - и иногда вспоминаешь, как раньше мучался.
Бесплатная. Дакументация. Масса примеров.

http://ehlib.com/RUS/default.htm


samalex   (2003-12-18 16:07:00) [15]

MV
А что это зверь DBGridEh и где его брать?


Плохиш_   (2003-12-18 16:04:00) [16]

TDBGrid.Invalidate


samalex   (2003-12-18 16:03:00) [17]

Ну, в принципе, да - Close/Open.


MV   (2003-12-18 16:01:00) [18]

Переходи на DBGridEh! Там все проблемы решены!


Sandman25   (2003-12-18 15:59:00) [19]

[10] samalex (18.12.03 15:49)

Приходит сообщение от таймера. Что дальше? Вы делаете Close/Open набору данных для грида?


samalex   (2003-12-18 15:49:00) [20]

Sandman25 ©
Я не понял вопрос, если интересна обработка события, но это техническая сторона, когда окно активно, все нормально, когда не активно ... событие не работает :

procedure TF_Menu00.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
PrData : Double;
PrNoWork : Boolean;
PrMin, PrMax : Double;
BufInt1 : integer;
begin
with TDBGrid(Sender) do
begin
If active then
begin
PrData:=DataSource.DataSet.FieldByName("Data").AsFloat;
PrNoWork:=DataSource.DataSet.FieldByName("NoWork").AsBoolean;

If PrDayNight=1 Then
begin
PrMax:=DataSource.DataSet.FieldByName("HiHi_Day").AsFloat;
PrMin:=DataSource.DataSet.FieldByName("LoLo_Day").AsFloat;
end
else
begin
PrMax:=DataSource.DataSet.FieldByName("HiHi_Night").AsFloat;
PrMin:=DataSource.DataSet.FieldByName("LoLo_Night").AsFloat;
end;

If not PrNoWork Then
begin
If (PrData<=PrMin) Then
begin
Canvas.Brush.color:=clYellow;
Canvas.Font.color:=clBlack;
end
else
If (PrData>PrMin) and (PrData<PrMax) Then
begin
Canvas.Brush.color:=clWhite;
Canvas.Font.color:=clBlack;
end
else
If (PrData>=PrMax) Then
begin
Canvas.Brush.color:=clRed;
Canvas.Font.color:=clYellow;
end
else
begin
Canvas.Brush.color:=clBlack;
end;
DefaultDrawColumnCell(Rect,DataCol,Column,State);
end
else
begin
Canvas.Brush.color:=clBlue;
Canvas.Font.color:=clWhite;
DefaultDrawColumnCell(Rect,DataCol,Column,State);
If Column.FieldName="Data" Then
begin
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left+Round((Rect.Right-Rect.Left-Canvas.TextWidth("


Страницы:   1 2

Наверх

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