Šta je novo?

Delphi - Forma gubi fokus?

dogriz

Čuven
Učlanjen(a)
07.07.2004
Poruke
403
Poena
630
Šta se dešava: u CLX aplikaciji iz glavne forme se kreira nova (Form2.Create, ShowModal...).
Po zatvaranju Forme 2, glavna forma bi trebala da primi fokus, ali to se ne dešava, već moram da pritisnem ALT+TAB da bi postala aktivna???

Kako se ovo može popraviti? Inače, to se ne dešava kod VCL-a.
 
Kako si tacno kreirao formu?
(copy/paste)
 
Kod:
procedure TFormMain.Grupe1Click(Sender: TObject);
begin
  FormGrupe:=TFormGrupe.Create(FormMain);
  FormGrupe.ShowModal;
  FormGrupe.Free;
end;

Grupe1 je obična stavka menija, a FormGrupe je u Project Options/Forms stavljena u Available Forms. Jedino je FormMain u Auto-Create Forms.

Interesantno je da se na ALT+TAB prikažu 2 ikonice aplikacije i kad se odabere jedna od te dve, ova druga nestane, a FormMain primi fokus.

Ne bi trebalo da je bitno, ali ajde da napomenem da glavna forma sadrži samo TMainMenu i neke nevizuelne komponente za bazu.
 
probaj sa:

Application.CreateForm(TFormGrupe, FormGrupe);

da bi na taj nacin Application objekat bio "vlasnik" te novokreirane forme.
 
Ne radi ni tako. Evo jedan trivijalan primer projekta koji demonstrira šta se dešava.

Ja koristim D7 na WinXPSP1, i dešava gore opisano. Ne mogu da skontam gde je greška, ali čini mi se da je negde u samom CLX-u...
 

Prilozi

  • FormFokus.zip
    3.7 KB · Pregleda: 56
Meni ne pravi te efekte, radi bas kako bi trebalo. D7 @ Win2k.

Jesi li probao da nadjes D7 apdejtove? Sa borlandovog sajta mozes da ih skines samo ako si registrovao proizvod...
 
Registrujem proizvod za mesec dana, još uvek sam pirat. :eyebrows:
U svakom slučaju sad znam da nisam lud koliko sam već počeo da mislim da jesam... ;)

Hvala ti na pomoći
 
Nakon naredbe
Form.Free;
stavi
FormMain.Show;

bolje ne znam, ali radi ;)
 
Poslednja izmena:
Može jedno pitanje, čisto informativno... Zašto ne staviš TGrupeForm među forme koje se automatski prave i uništavaju. Tako bi samo koristio ShowModal, i fokus ti sigurno ne bi pravio probleme... Naravno, staviš da bude nevidljiva po potrebi.
 
Poslednja izmena:
hwfanatic je napisao(la):
Može jedno pitanje, čisto informativno... Zašto ne staviš TGrupeForm među forme koje se automatski prave i uništavaju. Tako bi samo koristio ShowModal, i fokus ti sigurno ne bi pravio probleme... Naravno, staviš da bude nevidljiva po potrebi.

Nekad je bilo potrebno optimizovati, tj. minimizovati količinu memorije koju aplikacija koristi, ali to vreme je davno prošlo. Sada "ručno" kontrolišem kreiranje i oslobađanje formi, valjda iz navike, a postoje i neke druge prednosti - kod automatskog kreiranja formi, ta kreirana forma se ne uništava sve do izlaska iz aplikacije (FormClose je ne uništava) i tako se dogodi situacija da recimo TEdit u koji je po kreiranju upisan tekst Text1, pa izmenjen u Text2, po zatvaranju i ponovnom prikazivanju forme ispisuje Text2, a ne "default" vrednost.
 
Zato imas eventove forme kao sto su OnCreate, OnActivate, OnShow, itd. da ih obradis i postavis vrednosti kakve ti hoces nakon pojedinih dogadjaja, to im i jeste namena. A posto ionako radis rucno, to malo posla ne bi trebalo uopste da ti predstavlja problem.
 
Nazad
Vrh Dno