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

Вниз

Проблемы в Destroy   Найти похожие ветки 

 
anbezr   (2003-04-25 14:28) [0]

Привет!
столкнулся с проблемой - при выполнении деструктора возникает исключение (запись в [0]). деструктор - метод формы, которая создается в ручную в пакетном файле. на форме есть TGroupBox, который покрывает всю пов-ть формы. остальные объекты создаются от формы, но Parent у них := TGroupBox. при уничтожении формы я делал уничтожение объектов в ручную, в порядке, обратном созданию - не помогло. как только доходит до TGroupBox.Destroy - сразу происходит исключение.
что я делал неправильно.


 
MBo ©   (2003-04-25 14:33) [1]

если Owner-а ставил Self при создании, уничтожать внутренние объекты не надо


 
REA ©   (2003-04-25 14:34) [2]

Компонент сам удаляет всех, кто с ним связан и вручную уничтожать нет необходимости. Не исключено, что к моменту удаления вручную, самих компонентов уже не существует.


 
anbezr   (2003-04-25 14:39) [3]

и при автоматическом удалении та же проблема.
MainGroupBox := TGroupBox.Create(Self); - так писал в конструкторе для всех компонентов


 
anbezr   (2003-04-25 14:44) [4]

попробовал - перед уничтожением TGroupBox посмотрел все его кантролы - нет их...


 
anbezr   (2003-04-25 14:47) [5]

массив Components также пуст.


 
REA ©   (2003-04-25 14:53) [6]

MainGroupBox := TGroupBox.Create(Self); - сам себе родитель?
Приведи код полностью.


 
Palladin ©   (2003-04-25 14:53) [7]

код давай


 
anbezr   (2003-04-25 14:58) [8]

GlobalNameSpace.BeginWrite;
try
CreateNew(AOwner);
finally
GlobalNameSpace.EndWrite;
end;
with Self do
begin
Left := 366; Top := 282; BorderStyle := bsNone; Caption := "Form1"; ClientHeight := 210; ClientWidth := 353; Color := clBtnFace;
Font.Charset := RUSSIAN_CHARSET; Font.Color := clWindowText; Font.Height := -11; Font.Name := "MS Sans Serif"; Font.Style := [];
OldCreateOrder := False; Position := poScreenCenter; PixelsPerInch := 96;Visible := false;// TextHeight := 13;
end;
glParent := Self;
{ MainGroupBox := TGroupBox.Create(Self);
with MainGroupBox do
begin
Parent := Self; Left := 0; Top := 0; Width := 353; Height := 210; Align := alClient; Caption := "???????? ????????????? ??????";
Font.Charset := RUSSIAN_CHARSET; Font.Color := clWindowText; Font.Height := -11; Font.Name := "MS Sans Serif"; Font.Style := [];
ParentFont := False; TabOrder := 0;
end;}
AddrLabel := TLabel.Create(Self);
with AddrLabel do
begin
Parent := glParent; Left := 8; Top := 16; Width := 71; Height := 13; Caption := "????? ??????";
end;
NewValLabel := TLabel.Create(Self);
with NewValLabel do
begin
Parent := glParent; Left := 8; Top := 160; Width := 82; Height := 13; Caption := "????? ????????";
end;
AddrPanel := TPanel.Create(Self);
with AddrPanel do
begin
Parent := glParent; Left := 8; Top := 32; Width := 337; Height := 26; BevelInner := bvLowered;
HexEdit1 := THexEdit.Create(Self);
end;
with HexEdit1.Create(AddrPanel) do
begin
Parent := AddrPanel;
Left := 2; Top := 2; Width := 333; Height := 21; BorderStyle := bsNone; Font.Charset := RUSSIAN_CHARSET; Font.Color := clWindowText;
Font.Height := -13; Font.Name := "Courier New"; Font.Style := []; ParentFont := False;
end;
DeviceGroupBox := TGroupBox.Create(Self);
with DeviceGroupBox do
begin
Parent := glParent; Left := 8; Top := 64; Width := 337; Height := 41; Caption := "??????????";
end;
Device := TPanel.Create(Self);
with Device do
begin
Parent := DeviceGroupBox; Left := 2; Top := 15; Width := 333; Height := 24; Align := alClient; BevelOuter := bvNone;
end;
CurValGroupBox := TGroupBox.Create(Self);
with CurValGroupBox do
begin
Parent := glParent; Left := 8; Top := 112; Width := 337; Height := 41; Caption := "??????? ????????";
end;
CurrentVal := TPanel.Create(Self);
with CurrentVal do
begin
Parent := CurValGroupBox; Left := 2; Top := 15; Width := 333; Height := 24; Align := alClient; BevelOuter := bvNone;
end;
NewValPanel := TPanel.Create(Self);
with NewValPanel do
begin
Parent := glParent; Left := 8; Top := 176; Width := 137; Height := 28; BevelInner := bvLowered;
end;
NewVal := TEdit.Create(Self);
with NewVal do
begin
Parent := NewValPanel; Left := 2; Top := 2; Width := 133; Height := 24; BorderStyle := bsNone; Font.Charset := RUSSIAN_CHARSET; Font.Color := clWindowText;
Font.Height := -13; Font.Name := "Courier New"; Font.Style := []; ParentFont := False;
end;
btnEnter := TBitBtn.Create(glParent);
with btnEnter do
begin
Parent := glParent; Left := 152; Top := 160; Width := 49; Height := 45; Show;
end;
btnDown := TBitBtn.Create(glParent);
with btnEnter do
begin
Parent := glParent; Left := 200; Top := 160; Width := 49; Height := 45; Show;
end;
btnUp := TBitBtn.Create(glParent);
with btnEnter do
begin
Parent := glParent; Left := 248; Top := 160; Width := 49; Height := 45; Show;
end;
btnHome := TBitBtn.Create(glParent);
with btnEnter do
begin
Parent := glParent; Left := 296; Top := 160; Width := 49; Height := 45;
end;


 
anbezr   (2003-04-25 15:00) [9]

2 REA © (25.04.03 14:53)

the identifier Self references the object in which the method is called.


 
anbezr   (2003-04-25 15:04) [10]

переменная glParent:TWinControl была введена, поскольку кнопок не видно(первых 3).
MainGroupBox := TGroupBox.Create(Self); закоментирована так, для пробы. и с незакоментированным кодом и с закоментированным результат один - исключение. правда, в первом случае при выполнении MainGroupBox.Destroy, а во втором - AddrLabel.Destroy;


 
anbezr   (2003-04-25 15:24) [11]

HexEdit1 := THexEdit.Create(Self);

with HexEdit1.Create(AddrPanel) do
простите, что отнял время. :}


 
REA ©   (2003-04-25 15:25) [12]

В принципе Owner=Parent=Self. Криминала не видно.
А где вылетает исключение? У него есть деструктор?


 
anbezr   (2003-04-25 15:28) [13]

глупая опечатка, но сколько времени потратил! вот что значит пятница.


 
REA ©   (2003-04-25 16:01) [14]

где хоть опечатка то?


 
anbezr   (2003-04-25 16:18) [15]

там написано.
anbezr (25.04.03 15:24)

HexEdit1 := THexEdit.Create(Self); // первое создание объекта
end;
with HexEdit1.Create(AddrPanel) do //второе
begin


 
REA ©   (2003-04-25 16:29) [16]

На мой взгляд код вообще сильно перегружен присваиваниями. Вместо всего этого нужно фрейм создать или что-то вроде того.
Заодно и визуально менять можно.


 
Palladin ©   (2003-04-25 16:32) [17]

:) ну вот видишь
как сюда запостил и сам увидел ашипку

люди! не делайте тайн! кому тут нужен ваш код...


 
anbezr   (2003-04-25 16:35) [18]

2 REA © (25.04.03 16:29)
нельзя ли ссылку - проблема актуальная. устал делать формы вручную


 
REA ©   (2003-04-25 16:41) [19]

Ссылку на что? Как фреймы делать или формы?
В чем состоит задача?


 
anbezr   (2003-04-25 17:16) [20]

фреймы. впервые слышу это слово, применительно к Delphi


 
Calm ©   (2003-04-25 18:32) [21]

TFrame+F1


 
anbezr   (2003-04-25 18:46) [22]

спасибо.



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

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

Наверх




Память: 0.51 MB
Время: 0.021 c
3-23020
Viktor
2003-04-18 11:46
2003.05.08
Не удается выполнить запрос с двумя вложеными подзапросами


1-23081
FZ*XupypG
2003-04-26 04:27
2003.05.08
Использование вторичных потоков


14-23348
Tetragrammaton
2003-04-17 12:58
2003.05.08
Декомпиляция Delphi приложений....


1-23152
Вера и Наташа
2003-04-24 13:02
2003.05.08
StringGrid


1-23216
Viktor1
2003-04-25 10:08
2003.05.08
Код не работает! В чём проблеа не пойму. На форме ничего нет.