Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.29;
Скачать: CL | DM;

Вниз

AV при Close у TForm   Найти похожие ветки 

 
12 ©   (2010-06-07 12:46) [0]

Все нормально в варианте
TForm, TMainMenu, TMenuItem
procedure TfrmMain.miQuitClick(Sender: TObject);
var
 i, j : integer;
begin
 
 Close;
end;

и ошибка при
TForm, TToolBar, TButton
procedure TfrmMain.btnQuitClick(Sender: TObject);
begin
 close;
//если miQuit.Click; - тоже самое AV


 
pest ©   (2010-06-07 13:24) [1]

мало информации. тот код, который вы написали сам по себе работает и никакой ошибки нет.
unit Unit6;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ComCtrls, ToolWin, Menus;

type
 TForm6 = class(TForm)
   ToolBar1: TToolBar;
   ToolButton1: TToolButton;
   MainMenu1: TMainMenu;
   miclose1: TMenuItem;
   procedure ToolButton1Click(Sender: TObject);
   procedure miclose1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form6: TForm6;

implementation

{$R *.dfm}

procedure TForm6.miclose1Click(Sender: TObject);
begin
close
end;

procedure TForm6.ToolButton1Click(Sender: TObject);
begin
close
end;

end.


 
12 ©   (2010-06-07 13:56) [2]

не, именно
TToolBar, TButton

object tbMain: TToolBar
   Left = 0
   Top = 0
   Width = 1269
   Height = 83
   ButtonHeight = 79
   Caption = "tbMain"
   TabOrder = 1
   object btnQuit: TButton
     Left = 1145
     Top = 2
     Width = 75
     Height = 79
     Caption = "Выход"
     TabOrder = 6
     OnClick = btnQuitClick
   end
 end

хотя, наверное, надо ttoolbutton тут


 
Palladin ©   (2010-06-07 14:02) [3]

космические лучи... смени место жительства


 
12 ©   (2010-06-07 14:49) [4]

не, наверное TButton как-то не так сидит на TToolPanel
надо исходники посмотреть
Д7, XP

procedure TfrmMain.miQuitClick(Sender: TObject);
var
 i, j : integer;
begin
 for i := 0 to Screen.FormCount-1 do
 begin
   for j := 0 to Screen.Forms[i].ComponentCount - 1 do
     if (Screen.Forms[i].Components[j] is tAdoQuery) then tAdoQuery(Screen.Forms[i].Components[j]).Close;
   for j := 0 to Screen.Forms[i].ComponentCount - 1 do
     if (Screen.Forms[i].Components[j] is tAdoConnection) then
begin
 tAdoConnection(Screen.Forms[i].Components[j]).RollbackTrans;
 tAdoConnection(Screen.Forms[i].Components[j]).Close;
end;
 end;
 Close;
end;

так нет ошибки
procedure TfrmMain.btnQuitClick(Sender: TObject);
begin
 //close; - AV
 // miQuit.Click; - AV
 application.Terminate;
end;


 
turbouser ©   (2010-06-07 15:42) [5]


> 12 ©   (07.06.10 14:49) [4]


>  application.Terminate;

Halt(0); - тоже здоровский метод. и никаких AV. да.

>  for i := 0 to Screen.FormCount-1 do

Зачем этот цикл? О_о
При дисконнекте и так все связанные датасеты закрываются и делается ролбэк. см в ADODB.pas



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

Текущий архив: 2010.08.29;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.005 c
15-1266842702
KilkennyCat
2010-02-22 15:45
2010.08.29
Административное предложение (McSimmу и всем)


10-1166182665
CRA5H
2006-12-15 14:37
2010.08.29
Как вызвать JavaScript функцию из Delphi?


2-1275750948
HRustBB
2010-06-05 19:15
2010.08.29
Как рисовать на TPanel


2-1275926869
akosh12345
2010-06-07 20:07
2010.08.29
Копирование с индикатором процесса


15-1275925390
Miau
2010-06-07 19:43
2010.08.29
SQL 2000 vs SQL 2008