Показано с 1 по 1 из 1
Древовидный режим
-
17.02.2016, 15:24 #1
- Регистрация
- 09.06.2015
- Сообщений
- 1
- Сказал(а) спасибо
- 0
- Поблагодарили 0 раз(а) в 0 сообщениях
Delphi, checkbox в DBGrid для подсчета стоимости услуг
Добрый день!
Возникла проблема с реализацией "счета за услуги"... Есть форма, на ней dbgrid(подключена база access через элемент data sourse, query, ado connection), попыталась сделать сама прорисовку checkbox в пустом столбце подключаемой таблицы, но при нажатии на квадратик вылетает ошибка "Access violation at address 004CE3C0 in module Project1.exe. Read of address 00000000" При компиляции ошибки нет. я так понимаю, что где-то что-то не дописано? Если кто может, ткните где и как...
Спасибо!
В коде есть много лишнего (label, listbox и тд, я пробовал по-разному)
Код:
Код:unit Unit10; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, DBCtrls, DB, ADODB, Grids, DBGrids, ValEdit, CheckLst; type TForm10 = class(TForm) btn1: TBitBtn; cbb1: TComboBox; lbl1: TLabel; lbl2: TLabel; cbb2: TComboBox; chklst1: TCheckListBox; lst1: TListBox; lbl3: TLabel; con1: TADOConnection; qry1: TADOQuery; dbgrd1: TDBGrid; ds1: TDataSource; procedure btn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure dbgrd1DblClick(Sender: TObject); procedure lst1DblClick(Sender: TObject); procedure dbgrd1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); procedure dbgrd1CellClick(Column: TColumn); { procedure dbgrd1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); procedure dbgrd1CellClick(Column: TColumn); } private { Private declarations } public { Public declarations } end; var Form10: TForm10; m: String; n: string; DrawRect: Trect; bState: Boolean; StrList: TStringList; implementation uses Unit3, Unit4, Unit6; {$R *.dfm} procedure TForm10.btn1Click(Sender: TObject); begin Form10.Hide; Form3.Show; end; procedure TForm10.FormCreate(Sender: TObject); begin Form4.qry1.first; while not Form4.qry1.eof do begin cbb2.items.add(Form4.qry1.fieldByName('ИИИ?').value); Form4.qry1.next end; {ИИИИ Form6.qry1.first; while not Form6.qry1.eof do begin lst1.items.add(Form6.qry1.fieldByName('ИИИИИИ').value); Form6.qry1.next end; } end; procedure TForm10.dbgrd1DblClick(Sender: TObject); begin {lst1.items.Add(dbgrd1.SelectedField.asstring); } end; procedure TForm10.lst1DblClick(Sender: TObject); begin lst1.DeleteSelected; end; {procedure TForm10.dbgrd1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin {DrawColCell('ИИИИ?',Rect,Column,dbgrd1,StrList); } { if Column.FieldName = 'ИИИИ?' then begin DrawFrameControl(dbgrd1.Canvas.Handle, Rect,DFC_BUTTON, 0); end; end; procedure TForm10.dbgrd1CellClick(Column: TColumn); begin lbl3.Visible:=false; lbl3.Caption:=IntToStr(Qry1.RecNo); if dbgrd1.DataSource.DataSet.IsEmpty=true then exit; //Grid.SelectedRows.CurrentRowSelected := false; if(Column.FieldName='ИИИИ?')and(dbgrd1.DataSource.DataSet.RecordCount>0)then begin if StrList.Strings[dbgrd1.DataSource.DataSet.RecNo - 1] = '0' then StrList.Strings[dbgrd1.DataSource.DataSet.RecNo - 1] := '1' else StrList.Strings[dbgrd1.DataSource.DataSet.RecNo - 1] := '0'; dbgrd1.Repaint; end; dbgrd1.SelectedRows.CurrentRowSelected := True; end; } procedure TForm10.dbgrd1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin {DrawColCell('ИИИИ?',Rect,Column,dbgrid1,StrList); } if Column.FieldName = 'ИИИИ?' then begin DrawFrameControl(dbgrd1.Canvas.Handle, Rect,DFC_BUTTON, 0); end; end; procedure TForm10.dbgrd1CellClick(Column: TColumn); begin StrList.Clear; StrList:=TStringList.Create; lbl3.Visible:=false; lbl3.Caption:=IntToStr(qry1.RecNo); if dbgrd1.DataSource.DataSet.IsEmpty=true then exit; //dbGrid1.SelectedRows.CurrentRowSelected := false; if(Column.FieldName='ИИИИ?')and(dbgrd1.DataSource.DataSet.RecordCount>0)then begin if StrList.Strings[dbgrd1.DataSource.DataSet.RecNo - 1] = '0' then StrList.Strings[dbgrd1.DataSource.DataSet.RecNo - 1] := '1' else StrList.Strings[dbgrd1.DataSource.DataSet.RecNo - 1] := '0'; dbgrd1.Repaint; end; dbgrd1.SelectedRows.CurrentRowSelected := True; end; end.
---------- Post added at 17:24 ---------- Previous post was at 17:20 ----------
В коде стоит дублирование части кода (взято в {}, прошу прощения...)
Похожие темы
-
Отражение услуг переработчика в себестоимости
от damon1978 в разделе Общие вопросы по 1С - ПредприятиеОтветов: 8Последнее сообщение: 31.05.2016, 13:09 -
DBGrid delphi
от kskb7771 в разделе Прикладное программированиеОтветов: 2Последнее сообщение: 31.05.2010, 10:23
Социальные закладки