![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
AV при Close у TForm
12 © (2010-06-07 12:46:00)Все нормально в варианте
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
turbouser (2010-06-07 15:42:00) [1]
> 12 © (07.06.10 14:49) [4]
> application.Terminate;
Halt(0); - тоже здоровский метод. и никаких AV. да.
> for i := 0 to Screen.FormCount-1 do
Зачем этот цикл? О_о
При дисконнекте и так все связанные датасеты закрываются и делается ролбэк. см в ADODB.pas
12 (2010-06-07 14:49:00) [2]не, наверное 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;
Palladin (2010-06-07 14:02:00) [3]космические лучи... смени место жительства
12 (2010-06-07 13:56:00) [4]не, именно
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 тут
pest (2010-06-07 13:24:00) [5]мало информации. тот код, который вы написали сам по себе работает и никакой ошибки нет.
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.