Текущий архив: 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.5 MB
Время: 0.008 c