Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 00:57 15.06.24 
Компютри и Интернет
   >> Delphi
Всички теми Следваща тема *Кратък преглед

Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема Dinami4ni formiнови  
АвторVermax (Нерегистриран)
Публикувано21.08.03 11:30



..Един тъп въпрос

Как мога да разбера от дадена Форма кога друга форма(която се създава динами4но) е активна?

..heeeelllp (zabravil sym kak stava6e )



Тема Re: Dinami4ni formiнови [re: Vermax]  
Автор PecheniaМодератор (нема лабаво ;-)
Публикувано21.08.03 12:46



if Form.Active then...

чети и дишай по-леко


Тема Re: Dinami4ni formiнови [re: Pechenia]  
АвторVermax (Нерегистриран)
Публикувано21.08.03 13:18



...qvno ne sym se izrazil qsno...

tova bi rabotilo ako za formata se zadelq pamet pri startirane na prilojenieto, no ako formata se syzdava dinami4no (toest pamet za neq se zadelq v posledstvie-po vreme na rabota na prolijenieto) i ot druga forma se pravi proverka s "if Form.Active" - Delphi hvyrlq "Access Violation".

ta Vyprosa mi be6e - kak moga da razbera 4e formata,koqto se syzdava dinami4no e syzdadena i e activna (Tyi kato pri zatvarqneto i - zadelenata za neq pamet se osvobojdava)



Тема Re: Dinami4ni formiнови [re: Vermax]  
Автор PecheniaМодератор (нема лабаво ;-)
Публикувано21.08.03 13:30



Направих си труда да напиша едно приложение, ето кода:

procedure TForm1.FormCreate(Sender: TObject);
var p: TForm;
begin
p:=TForm.Create (nil); // това заделя памет за формата
p.Show; // това прави формата p активна
if p.Active then ShowMessage ('p is active') else ShowMessage ('p is not active');
end;

Изтрий коментираните редове и я пусни пак. Аз лично не получих Access Violation

Редактирано от Pechenia на 21.08.03 13:34.



Тема Blagodarqнови [re: Pechenia]  
АвторVermax (Нерегистриран)
Публикувано21.08.03 15:30



Благодаря приятелю ,но наистина явно не можем да се разберем

...както и да е аз си спомних как ставаха работите:

Var
ChildForm:TForm1; //globalna promenliva

//Ако на някой бутон имаш:

procedure Buttonclick......
begin
ChildForm:=TForm1.create(self);
ChildForm.Showmodal;
end;

//to

Procedure Table1.Afterscroll.....
begin
if assigned(ChildForm) then //proverqva dali formata e v pametta
.......
end;





Тема Re: Blagodarqнови [re: Vermax]  
Автор Eмил ()
Публикувано21.08.03 16:15



"if assigned(ChildForm) then //proverqva dali formata e v pametta "

Има един подводен камък.
Ако после освободиш формата:

ChildForm.Free 

и след това провериш
 if assigned... 

то ChildForm няма да е nil, но паметта за
формата ще е освободена и проверката
 if ChildForm.Active ... 

пак ще гръмне. (Защото assigned просто
проверява дали обекта е nil или не, но дали
тази памет е достъпна е друг въпрос )

Затова вместо
 ChildForm.Free 

може да се използва
 FreeAndNil(ChildForm) 

за да си сигурен че ще стане nil.
Еквивалентно на
 Form.free и Form:=nil;


Друг способ:

var FlagIsFormActive:boolean;
...
FlagIsFormActive:=false;
try FlagIsFormActive:=Form.Active except end;
{и сега вече}
if FlagIsFormActive then ...




Тема Re: Blagodarq [re: Vermax]  
Автор PecheniaМодератор (нема лабаво ;-)
Публикувано21.08.03 19:29



Ми то под "активна" се разбира дали е на фокус... Както и да е, щом си се оправил...

чети и дишай по-леко


Тема Re: Dinami4ni formiнови [re: Vermax]  
Авторabout (Нерегистриран)
Публикувано22.08.03 17:08



Имаш MainForm и ChildForm.
Добавяш един флаг ChildFormActive: boolean в MainForm

Slagash w OnCreate methoda na ChildForm
MainForm.ChildFormActive:=true;
Slagash w OnDestroy methoda na ChildForm
MainForm.ChildFormActive:=false;

Ако не знаеш как да хванеш динамично OnCreate i OnDestroy пиши тук...



Тема Оф, хора :)нови [re: about]  
Автор z_free (людоед)
Публикувано22.08.03 18:10



Шашкам се вече :) Какво му е на if Assigned(форма) then .. аз лично никога не пиша обект.Free; - винаги заnilявам

-------------
Special killer double trouble triple extra nicotine monster!


Тема Re: Оф, хора :)нови [re: z_free]  
Авторabout (Нерегистриран)
Публикувано22.08.03 20:09



Ами, на мен ми е малко мътно какво точно прави това assigned.
Пък и с флаг си е абсолютно ясно за какво става дума...
А ти що не ползваш фрии ? :)




Страници по тази тема: 1 | 2 | >> (покажи всички)
Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.