![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Виртуальное поле [D5, IB5.x]
малой © (2002-06-05 11:57:00)Необходимо создать виртуальное поле, содержащее 0 или 1, чтобы при нажатие на ячейку в гриде менялось содержимое на противоположное, т.е. 0 на 1, 1 на 0.
Еще раз: этого поля в базе нет. Как это сделать?
Johnmen (2002-06-06 09:26:00) [1]Все несколько проще :
1.Создаешь поле char(1), в котором м.б. "0" или "1"
2.В гриде OnDrawDataCell отрисовываешь в соотв.колонке, напр."галочку", если "1", ничего - если "0"
3.Обрабатываешь OnMouseDown, OnKeyDown, чтобы менять "0"->"1" и наоборот.
skiph (2002-06-06 04:59:00) [2]А можно вставить 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;
малой (2002-06-05 12:22:00) [3]Спасибо, попробую
Val (2002-06-05 12:21:00) [4]не нужно делть CalculatedField - не поможет. Воспользуйтесь запросом по совету Lusha © (05.06.02 12:11)
малой (2002-06-05 12:15:00) [5]Можно добавить поле FieldKind:=fkCalculated, но не могу менять значение, кроме как в OnCalcFields, но как это сделать ума не приложу
yozhik (2002-06-05 12:14:00) [6]используй CalculatedField
Lusha (2002-06-05 12:11:00) [7]>малой (05.06.02 11:57)
SELECT Field1, Field2, ..., 0 AS VirtualField FROM TABLE1...
Kaban (2002-06-05 12:08:00) [8]А в чем проблема:
есть допустим TQuery, у него есть TField, метод Add
конечно не проверял, но, по идее, должно работать