Текущий архив: 2006.01.29;
Скачать: CL | DM;
Вниз
DBGrid - не отрисовывать запись по условию в вычисляемом поле Найти похожие ветки
← →
alex_1234 © (2005-11-29 10:58) [0]К сожалению нельзя фильтровать по вычисляемым полям....
А хочется....
Придумал попробовать сделать следующий финт ушами:
в событии DBGrid1DrawColumnCell проверять условие, и если надо, то просто не отрисовывать текущую запись. Примерно так (оно не работает):
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if ((Query1FAKTOSTATOK.AsInteger=0) and (CheckBox1.Checked)) then Exit;//ВСЕ РАВНО, ГАД, ОТРИСОВЫВАЕТ!!!!
IF Query1FAKTOSTATOK.AsInteger=0 then
Begin
// TDBGrid(Sender).Canvas.Brush.Color:=clGreen;
TDBGrid(Sender).Canvas.Font.Color:=clRed;
End;
// если строка была выделена, оставляем "подсвеченные" цвета
IF gdSelected IN State
Then Begin
TDBGrid(Sender).Canvas.Brush.Color:= clHighLight;
TDBGrid(Sender).Canvas.Font.Color := clHighLightText;
End;
// А теперь пусть он рисует сам !
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
Кусок кода взят из статейки "Разноцветный грид".....
Query1FAKTOSTATOK - вычисляемое поле по данным другого запроса.
CheckBox1 - галка "Показывать только >0"
В чем собака порылась?
← →
Sergey13 © (2005-11-29 11:00) [1]OnFilterRecord попробуй.
← →
alex_1234 © (2005-11-29 11:57) [2]Не выходит каменный цветок...
На момент события
procedure TForm1.Query1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
Accept:=DataSet.FieldByName("FAKTOSTATOK").AsInteger>0;
end;
DataSet.FieldByName("FAKTOSTATOK").AsInteger ВСЕГДА равно нулю...
Поля я считаю следующим макаром:
procedure TForm1.Query1CalcFields(DataSet: TDataSet);
begin
//вычисление полей
if Query2.Locate("cardarticu",Query1ARTICUL.AsString,[loCaseInsensitive]) then
Query1PRODZASMENU.AsInteger:=Query2kol.AsInteger
else
Query1PRODZASMENU.AsInteger:=0;
Query1FAKTOSTATOK.AsInteger:=Query1ADDNUM1.AsInteger-Query1PRODZASMENU.AsInteger;
end;
← →
Sergey13 © (2005-11-29 12:02) [3]А что мешает выполнить код (адаптированный конечно) из TForm1.Query1CalcFields в TForm1.Query1FilterRecord?
← →
alex_1234 © (2005-11-29 12:09) [4]Вы ГЕНИЙ!!!
ОНО ЗАРАБОТАЛО!!!
← →
Sergey13 © (2005-11-29 12:11) [5]2 [4] alex_1234 © (29.11.05 12:09)
Сообщи это моему начальнику. А то он не в курсе. 8-)
← →
evvcom © (2005-11-29 12:13) [6]УР-РА!!!! :-)
← →
Виталий Панасенко (2005-11-29 12:39) [7]Да, ларчик то просто открывался..:-)))
Страницы: 1 вся ветка
Текущий архив: 2006.01.29;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.031 c