Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.10.2017, 11:37
Ekler1 Ekler1 вне форума
Новичок
 
Регистрация: 12.06.2017
Сообщения: 90
Версия Delphi: RAD Studio XE7
Репутация: 10
По умолчанию Помогите убрать ошибку access violation at address 00968А86

Не могу понять почему вылетает ошибка... на другой форме такой-же код и все нормально(

Код:
unit Unit14;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Data.DB, Data.Win.ADODB,
  Vcl.Grids, Vcl.DBGrids, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.DBCtrls, Vcl.Menus,
  cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxContainer,
  cxEdit, cxCheckBox, cxDBEdit;

type
  TForm14 = class(TForm)
    DBGrid1: TDBGrid;
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    DateTimePicker1: TDateTimePicker;
    Panel1: TPanel;
    DateTimePicker2: TDateTimePicker;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Label3: TLabel;
    Button2: TButton;
    Button3: TButton;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    Button4: TButton;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    cxDBCheckBox1: TcxDBCheckBox;
    procedure Button1Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure N6Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure DBGrid1ColExit(Sender: TObject);
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form14: TForm14;


implementation

{$R *.dfm}

uses Unit1, DateUtils, Unit3, Unit4, Unit11, Unit10, Unit12, Unit13;

procedure TForm14.Button1Click(Sender: TObject);
  begin
with adoQuery1 do
  begin
    Close;
    sql.clear;
    ADOQuery1.SQL.Text:='SELECT * FROM ZakazKL WHERE data BETWEEN :date_b AND :date_e ORDER BY data';
ADOQuery1.Parameters.ParamByName('date_b').Value:=DateOf(DateTimePicker1.DateTime);
ADOQuery1.Parameters.ParamByName('date_e').Value:=DateOf(DateTimePicker2.DateTime);
ADOQuery1.Open;
    open;
    end;
  end;

procedure TForm14.Button2Click(Sender: TObject);
begin
Form4.Show;
end;

procedure TForm14.Button3Click(Sender: TObject);
var I:integer;
begin
form11.ADOQuery1.Append;
For I := 0 To form14.ADOQuery1.Fields.Count-1 Do
  if form11.ADOQuery1.Fields[i].FieldName <> 'Код' Then
    form11.ADOQuery1.Fields[i].Value := form14.ADOQuery1.Fields[i].Value;
form11.ADOQuery1.Post;
form14.ADOQuery1.Delete;
end;

procedure TForm14.Button4Click(Sender: TObject);
begin
Form1.Show;
Form14.Visible :=false;
end;

procedure TForm14.DBGrid1ColExit(Sender: TObject);
begin
  if DBGrid1.SelectedField.FieldName = cxDBCheckBox1.DataBinding.DataField then
    cxDBCheckBox1.Visible := False
end;

procedure TForm14.DBGrid1DrawColumnCell(
  Sender: TObject; const Rect: TRect; DataCol:
  Integer; Column: TColumn; State: TGridDrawState);
const IsChecked : array[Boolean] of Integer =
      (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
var
  DrawState: Integer;
  DrawRect: TRect;
begin
  if (gdFocused in State) then
  begin
    if (Column.Field.FieldName = cxDBCheckBox1.DataBinding.DataField) then
    begin
     cxDBCheckBox1.Left := Rect.Left + DBGrid1.Left + 2;
     cxDBCheckBox1.Top := Rect.Top + DBGrid1.top - 1;
     cxDBCheckBox1.Width := Rect.Right - Rect.Left;
     cxDBCheckBox1.Height := Rect.Bottom - Rect.Top;
     cxDBCheckBox1.Visible := True;
    end
  end
  else
  begin
    if (Column.Field.FieldName = cxDBCheckBox1.DataBinding.DataField) then
    begin
      DrawRect:=Rect;
      InflateRect(DrawRect, -1, -1);
      DrawState := ISChecked[Column.Field.AsBoolean];
      DBGrid1.Canvas.FillRect(Rect);
      DrawFrameControl(DBGrid1.Canvas.Handle, DrawRect,
                       DFC_BUTTON, DrawState);
    end;
  end;
end;

procedure TForm14.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if (key = Chr(9)) then Exit;
  if (DBGrid1.SelectedField.FieldName = cxDBCheckBox1.DataBinding.DataField) then
  begin
    cxDBCheckBox1.SetFocus;
    SendMessage(cxDBCheckBox1.Handle, WM_Char, word(Key), 0);
  end;
end;

procedure TForm14.Edit1Change(Sender: TObject);
var help1, help2:string;
begin
 help1:='%'+Form14.Edit1.Text+'%';
 help2:=QuotedStr(help1);
 with Form14.ADOQuery1 do
 begin
   Close;
   SQL.Clear;
   SQL.Add('SELECT * from zakazKL where salon like '+help2+' or data like '+help2+' or fioklient like '+help2+' or "data zakaza" like '+help2+' or OD like '+help2+' or OS like '+help2+' order by salon');
   Open;
 end;
end;

procedure TForm14.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form3.Close;
end;

procedure TForm14.N3Click(Sender: TObject);
begin
Form11.Show;
end;

procedure TForm14.N6Click(Sender: TObject);
begin
form10.Show;
end;

procedure TForm14.N9Click(Sender: TObject);
begin
Form12.Show;
end;

end.
Изображения
Тип файла: png Безымянный.png (201.7 Кбайт, 5 просмотров)
Ответить с цитированием
  #2  
Старый 23.10.2017, 21:39
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 173
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Попытайся локализовать проблему. Самый простой метод (без дебага) - ставь showmessage('') в подозрительных местах. Ошибка выскочила до сообщения - ставь showmessage ранее. Выскочила позже - ставь позже. Или можно beep вместо этого.
Ответить с цитированием
Этот пользователь сказал Спасибо Guaho за это полезное сообщение:
Ekler1 (24.10.2017)
  #3  
Старый 24.10.2017, 09:33
Ekler1 Ekler1 вне форума
Новичок
 
Регистрация: 12.06.2017
Сообщения: 90
Версия Delphi: RAD Studio XE7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Guaho
Попытайся локализовать проблему. Самый простой метод (без дебага) - ставь showmessage('') в подозрительных местах. Ошибка выскочила до сообщения - ставь showmessage ранее. Выскочила позже - ставь позже. Или можно beep вместо этого.

Спасибо, проблему решил! Тему можно закрывать!

Последний раз редактировалось Ekler1, 24.10.2017 в 10:38.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter