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

Вниз

TEhLib   Найти похожие ветки 

 
nap<>   (2006-02-20 08:36) [0]

Можно ли  в DbGrid сделать непривязанное к полю в таблице колонку с CheckBox И потом полбчить оттуда зачение


 
nap<>   (2006-02-20 08:57) [1]

Подскажите плиз очень надо!!!!


 
КаПиБаРа ©   (2006-02-20 09:03) [2]

Создаешь вычисляемое поле Check.
В списке отмечаешь ID выделенных строк.
FListSelect: TList;

При отрисовке ячейки поля Check проверяешь наличие элемента в списке и рисуешь галочку.
procedure TClientForm.dbgCargoDrawColumnCell(Sender: TObject;
 const Rect: TRect; DataCol: Integer; Column: TColumn;
 State: TGridDrawState);
var
 Style: Integer;
begin
 if not (qryCargo.Active and (qryCargo.RecordCount <> 0)) then
   Exit;
 //  State := State - [gdFixed];
 if CompareText(Column.FieldName, "Check") = 0 then
 begin
   if FListSelect.IndexOf(Pointer(TDBGrid(Sender).DataSource.
     DataSet.FieldByName(_fIdnCargo).AsInteger)) >= 0 then
     Style := DFCS_CHECKED
   else
     Style := DFCS_BUTTONCHECK;
   DrawFrameControl(TDBGrid(Sender).Canvas.Handle, Rect, DFC_BUTTON, Style);
 end;
end;

При нажатии на ячейку добавляешь строку в список
procedure TClientForm.dbgCargoCellClick(Column: TColumn);
var
 i, j: Integer;
 Cell: TGridCoord;
 p: TPoint;
begin
 if not (qryCargo.Active and (qryCargo.RecordCount <> 0)) then
   Exit;
 p := dbgCargo.ScreenToClient(Mouse.CursorPos);
 Cell := dbgCargo.MouseCoord(p.X, p.Y);
 if Cell.X >= 0 then
   if dbgCargo.Columns[Cell.X].FieldName = "Check" then
     SelRow;
end;

procedure TClientForm.SelRow;
var
 i: integer;
begin
 if (not qryCargo.Active) or (qryCargo.RecordCount = 0) then
   Exit;
 i := qryCargo.FieldByName(_fIdnCargo).AsInteger;
 if FListSelect.Count > 0 then
 begin
   if FListSelect.IndexOf(Pointer(i)) >= 0 then
   begin
     FListSelect.Delete(FListSelect.IndexOf(Pointer(i)));
     FSumm := FSumm - qryCargo.FieldValues[_fPayment];
     FOpl := FOpl - qryCargo.FieldValues[_fPayAll];
   end
   else
   begin
     FListSelect.Add(Pointer(i));
     FSumm := FSumm + qryCargo.FieldValues[_fPayment];
     FOpl := FOpl + qryCargo.FieldValues[_fPayAll];
   end;
 end
 else
 begin
   FListSelect.Add(Pointer(i));
   FSumm := FSumm + qryCargo.FieldValues[_fPayment];
   FOpl := FOpl + qryCargo.FieldValues[_fPayAll];
 end;
 dbgCargo.Refresh;
 CalcSumm;
end;


 
Patrick   (2006-02-20 09:05) [3]

Можно создать в датасете вычисляемое поле (как бы виртуальное) в событии OnCalcRecord его как надо инициализировать, ну и в дальнейшем использовать его как надо.


 
nap<>   (2006-02-20 09:31) [4]

Спасибо большое!!!


 
msguns ©   (2006-02-20 09:39) [5]

Field.OnGetText значительно проще имхо.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.012 c
9-1126089328
макс99
2005-09-07 14:35
2006.03.05
Вопрос по glRotate и glTranslate


15-1139513697
-САша-
2006-02-09 22:34
2006.03.05
BDS2006


15-1139681490
PARUS
2006-02-11 21:11
2006.03.05
Телефонный вопрос.


6-1132634383
hed
2005-11-22 07:39
2006.03.05
Передача файла на apache сервер


2-1140088376
Id
2006-02-16 14:12
2006.03.05
TIBBlobStream





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский