Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];




Вниз

Добавление-удаление фреймов 


Катерина   (2002-04-15 11:03) [0]

Удивительное дело: создаю фреймы, затем по нажитию определенной кнопки добавляю один из них список компонент. По окончании работы, удаляю из компонентов:

var
Form1: TForm1;

theFrame1 : TFrame1;
theFrame2 : TFrame2;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
begin

ShowMessage(IntToStr(ComponentCount));

theFrame1 := TFrame1.Create(Owner);
theFrame2 := TFrame2.Create(Owner);

ShowMessage(IntToStr(ComponentCount));

end;

procedure CloseAll;
var aComp : TComponent;
begin with Form1 do
begin
ShowMessage(IntToStr(ComponentCount));

aComp := FindComponent("Frame1");
if aComp <> NIL then RemoveComponent(aComp);

aComp := FindComponent("Frame2");
if aComp <> NIL then RemoveComponent(aComp);

Update;

ShowMessage(IntToStr(ComponentCount));
end;

procedure Browse1;
begin with Form1 do
begin
CloseAll;

theFrame1.Parent := Self;
theFrame1.Top := 20;
theFrame1.Left := 8;
theFrame1.Width := 841;
theFrame1.Height := 558;
theFrame1.Visible := TRUE;
InsertComponent(theFrame1);
end;
end;

procedure Browse2;
begin with Form1 do
begin
CloseAll;

theFrame2.Parent := aSelf;
theFrame2.Top := 20;
theFrame2.Left := 8;
theFrame2.Width := 841;
theFrame2.Height := 558;
theFrame2.Visible := TRUE;
InsertComponent(theFrame2);
end;
end;


Отладочная печать честно фиксирует кол-во компонентов формы. Но фрейм после удаления остается на форме. Что делать? Заранее спасибо.



Игорь Шевченко   (2002-04-15 11:15) [1]

День добрый,

У меня такой ощущение, что Frames создаются с Owner = Owner самой формы, так что FindComponent у формы сработать не должен...

То есть, Owner у Frame либо Application, либо кто-то еще, а
Parent - сама форма...
Оно так задумано ?
Может, имелось с виду:



procedure TForm1.FormShow(Sender: TObject);
begin

ShowMessage(IntToStr(ComponentCount));

theFrame1 := TFrame1.Create(Self);
theFrame2 := TFrame2.Create(Self);

ShowMessage(IntToStr(ComponentCount));

end;

?



С уважением,



Катерина   (2002-04-15 11:44) [2]

Да нет, FindComponenet находит и RemoveComponent удаляет, очем свидетельствует ComponentCount, а дальше не понятно. Сделала, как Вы подсказали - тот же результат.



Игорь Шевченко   (2002-04-15 12:21) [3]

День добрый,

Глупый вопрос: а зачем так сложно делать? Вы создаете 2 frame, а потом по каким-то условиям вы их либо добавляете в форму, либо удаляете?
Чего в результате этих дествий вы хотите добиться? :-)

С уважением,



Игорь Шевченко   (2002-04-15 12:24) [4]

День добрый,

А просто Owner"а (и Parent"a) у Frame менять не подходит?
Кстати, там, где вы удаляете Frame из формы, не видно, что присходит с Parent этого Frame...

С уважением,



Катерина   (2002-04-15 13:44) [5]

Да, действительно, это сложновато. Загрузила все фреймы сразу и по очереди их визуализирую.



Игорь Шевченко   (2002-04-15 14:23) [6]

День добрый,

Вообще-то визуализация определяется свойством Visible.
Не проще ли будет это свойство использовать? :-)

С уважением,




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.038 c
1-94382           Yuraz                 2002-04-15 15:26  2002.04.29  
2 вопроса, 1) как проверить на компе есть ли ADO библ.


1-94512           Коля                  2002-04-17 06:43  2002.04.29  
Чвета в RichEdit Помогите!


1-94432           Rammst                2002-04-11 07:36  2002.04.29  
HELP!!!!!


14-94541          Knight                2002-03-21 13:21  2002.04.29  
вопросик имеется... типа


6-94531           knyaz17               2002-02-15 14:06  2002.04.29  
Как можно отобразить список элементов в WebBrowser??