Форум: "Базы";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];
ВнизВиртуальное поле Найти похожие ветки
← →
малой (2002-06-05 11:57) [0]Необходимо создать виртуальное поле, содержащее 0 или 1, чтобы при нажатие на ячейку в гриде менялось содержимое на противоположное, т.е. 0 на 1, 1 на 0.
Еще раз: этого поля в базе нет. Как это сделать?
← →
Kaban (2002-06-05 12:08) [1]А в чем проблема:
есть допустим TQuery, у него есть TField, метод Add
конечно не проверял, но, по идее, должно работать
← →
Lusha (2002-06-05 12:11) [2]>малой (05.06.02 11:57)
SELECT Field1, Field2, ..., 0 AS VirtualField FROM TABLE1...
← →
yozhik (2002-06-05 12:14) [3]используй CalculatedField
← →
малой (2002-06-05 12:15) [4]Можно добавить поле FieldKind:=fkCalculated, но не могу менять значение, кроме как в OnCalcFields, но как это сделать ума не приложу
← →
Val (2002-06-05 12:21) [5]не нужно делть CalculatedField - не поможет. Воспользуйтесь запросом по совету Lusha © (05.06.02 12:11)
← →
малой (2002-06-05 12:22) [6]Спасибо, попробую
← →
skiph (2002-06-06 04:59) [7]А можно вставить ComboBox в DBGrid.
Type TColumnAction = (caNotes, caGraphic, caCheck , caLength, caNone);
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var CheckIt : Boolean;
Style : Integer;
begin
CheckIt := {выражение, которое определяет выставлена галочка или нет}
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);
// Temp - вспомогательная колонка, в которой и происходит
//прорисовка. Хоть она и вспомогательная, но она должна быть
// привязана к реальному полю таблицы иначе вылетит
if CompareText(Column.FieldName, "TEMP") = 0
then begin
IF CheckIt
Then Style := DFCS_CHECKED
Else Style := DFCS_BUTTONCHECK;
DrawFrameControl(TDBGrid(Sender).Canvas.Handle, Rect, DFC_BUTTON, Style);
end;
end;
← →
Johnmen (2002-06-06 09:26) [8]Все несколько проще :
1.Создаешь поле char(1), в котором м.б. "0" или "1"
2.В гриде OnDrawDataCell отрисовываешь в соотв.колонке, напр."галочку", если "1", ничего - если "0"
3.Обрабатываешь OnMouseDown, OnKeyDown, чтобы менять "0"->"1" и наоборот.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.014 c