Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];

Вниз

Проблемы в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.007 c
3-22977
airb
2003-04-17 14:18
2003.05.08
DBChart


1-23060
BBCHa
2003-04-25 16:25
2003.05.08
Нестандартная прорисовка скроллинга


14-23374
Alex087
2003-04-21 15:37
2003.05.08
Как реализовать гипертекстовый документ? (-)


1-23144
ers
2003-04-28 09:52
2003.05.08
PopupMenu


9-22897
JB
2002-11-29 07:32
2003.05.08
3D Max и игры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский