Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Određivanje vidljivog panela

[es] :: Pascal / Delphi / Kylix :: Određivanje vidljivog panela

[ Pregleda: 2548 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Određivanje vidljivog panela27.01.2010. u 10:02 - pre 172 meseci
Na formi imam nekoliko panela (pregled, unos, unos stavke itd...)
Na određenu akciju korisnika postavljam određeni panel kao gornji - vidljivi (Panel.BringToFron)

Kako odrediti koji mi je postavljen kao najgornji, tj. koji je vidljiv?
Rješio sam to preko tag-a, tako da postavljam vrijednost na 1 za onaj koji je gornji, zanima me da li je to oguće odrediti drugačije.
 
Odgovor na temu

Vic
Error974
BI&SE
Beograd

Član broj: 16118
Poruke: 396
*.imlek.co.yu.



+49 Profil

icon Re: Određivanje vidljivog panela27.01.2010. u 11:01 - pre 172 meseci
Ako sam dobro shvatio, tebi od nekoliko panela treba samo jedan da bude vidljiv? Onda tu nema gornji i donji, odnosno mislim da je to pogresno. Panel je ili visible:=true ili nije, a proveru vrsis sa if panelX.visible then ....
ERROR974
 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: Određivanje vidljivog panela27.01.2010. u 11:27 - pre 172 meseci
Ne, imam više panela na formi, svima je Align = alClinet, Visible = true

Prema potrebi neki od njih postavljam sa BringToFront

Kako odrediti koji je posljednji postavljen sa BringToFront, tj. koji je najgornji?

Odlučio sam kreirati svoju kontrolu kao nasljednika TPanel. U noj varijablu koja se setira sa BrigToFront, a properti vraća tu vrijdnost. Našao sam način kako svima ostalima panelima koji su na formi, a nisu onaj za koji pozivam BringToFront, postaviti tu varijablu na false.

Kako dodati evente:

OnBringToFront
OnSendToBack

Jasno je po imenu kada bi se okidali.
 
Odgovor na temu

Vic
Error974
BI&SE
Beograd

Član broj: 16118
Poruke: 396
*.imlek.co.yu.



+49 Profil

icon Re: Određivanje vidljivog panela27.01.2010. u 11:34 - pre 172 meseci
Zbog problematike koja tebe muči, takav pristup se ne koristi. Ili koristi dinamički kreirane panele ili u okviru jednog panela koji je alClient kreiraj objekat tipa frame za tvoje potrebe. Napravis 5 različitih objekata i u zavisnosti od potrebe, postavljas ih na panel.
ERROR974
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Određivanje vidljivog panela27.01.2010. u 11:54 - pre 172 meseci
> Na formi imam nekoliko panela (pregled, unos, unos stavke itd...)
> Na određenu akciju korisnika postavljam određeni panel kao gornji - vidljivi (Panel.BringToFron)

> Kako odrediti koji mi je postavljen kao najgornji, tj. koji je vidljiv?
> Rješio sam to preko tag-a, tako da postavljam vrijednost na 1 za onaj koji je gornji, zanima me da li je to oguće odrediti drugačije.


Code:

function FindTopPanel(const AParentHandle: HWND): TPanel;
var
  Temp: HWND;
  Control: TWinControl;
begin
  Temp := GetTopWindow(AParentHandle);
  Control := FindControl(Temp);
  while Assigned(Control) and not (Control is TPanel) do
  begin
    Temp := GetWindow(Control.Handle, GW_HWNDNEXT);
    Control := FindControl(Temp);
  end;

  Result := TPanel(Control);
end;

i poziva se sa FindTopPanel(Form1.Handle);


 
Odgovor na temu

Vic
Error974
BI&SE
Beograd

Član broj: 16118
Poruke: 396
*.imlek.co.yu.



+49 Profil

icon Re: Određivanje vidljivog panela27.01.2010. u 12:05 - pre 172 meseci
Ovo sto je Igor napisao je potpuno OK, sve dok se ne odlucis da koristis kombinovanje panela, da su ti neki alClient, neki alLeft.... ovo radi za alClient.
ERROR974
 
Odgovor na temu

rambo
Dejan Petković
Beograd

Član broj: 6095
Poruke: 190
*.dynamic.sbb.rs.



+6 Profil

icon Re: Određivanje vidljivog panela27.01.2010. u 19:12 - pre 172 meseci
Jedno praktično pitanje. Zašto za tako nešto koristiš panele a ne TPageControl? Ako ti je potrebno da u jednom trenutku vidiš samo jedan panel, čemu onda paneli? Zato je napravljen TPageControl. Ako ti smeta to što se vide tabovi na njemu, možeš da ih ukloniš. Ako ti se i to ne sviđa, možeš da koristiš TNotebook komponentu.
"There is a theory which states that if ever anybody discovers exactly what the
Universe is for and why it is here, it will instantly disappear and be replaced by
something even more bizarre and inexplicable. There is another theory which states
that this has already happened."
-- Douglas Adams
 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: Određivanje vidljivog panela27.01.2010. u 22:07 - pre 172 meseci
Hvala na odgovorima, iskušat ću ono što je napisao savkic.

Kako ukloniti tabove iz TPageControl-a? U ObjectInspector-u se ne mogu ukloniti, tj. mogu se staviti gore-dolje, lijevo-desni i prikaz kao: Tabs, Buttons, FlatButtons. On bi zaista bio zgodnije rješenje i lakše za programiranje.

Moram otvoriti još jednu temu radi vidljivosti property-a...

Pogledao sam kontrolu TNotebook, ima sve što mi treba. Nije mi jasno zašto ju nikada nisam pogledao (valjda jer je u Win 3.1), a kolega koji je prije mene radio program radio ga je sa panelima, ja nastavio...

U svakom slućaju - hvala.

[Ovu poruku je menjao franjo_tahi dana 27.01.2010. u 23:40 GMT+1]
 
Odgovor na temu

tkaranovic
Tomislav Karanović
Beograd

Član broj: 220507
Poruke: 307



+18 Profil

icon Re: Određivanje vidljivog panela28.01.2010. u 05:57 - pre 172 meseci
Ovo što je savkic napisao... sa BringToFront, SendToBack, GetTopWindow i GetWindow se regulišu Z Order pozicije prozora. Prozor koji je ne vrhu Z Order liste će biti na vrhu šta god da je prozorima (panelima...) u align propertiju. Tako da je to uvek sasvim upotrebljiv0.

Inače se ovako mogu sakriti tabovi (mogu i iz ObjectInspectora):

Code (delphi):

 for strane := 0 to PageControl1.PageCount-1 do
  PageControl1.Pages[strane].TabVisible := false;
 PageControl1.Style := tsButtons;
 PageControl1.ActivePage := TabSheet1;
 


uz napomenu da je tako PageControl1.TabIndex neupotrebljiv (uvek je -1) a umesto njega se može koristiti PageControl1.ActivePage.PageIndex, a strane se mogu menjati i(li) proveravati koja je aktivna sa:

Code:

if PageControl1.ActivePage = TabSheet1 then 
 PageControl1.ActivePage := TabSheet2;

 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: Određivanje vidljivog panela28.01.2010. u 23:39 - pre 172 meseci
Ipak sam odlučio sve prebaciti na PageControl kontrolu
Tabove ne skrivam u runtime, već u Form.OnShow tako da mi je lakše igrati se po fromi, a bez selektiranja kontrole u Object inspector-u ili u Structure.

TNotebook mi se na kraju i nije toliko svidio, čudno se ponaša. Kada na jednu od stranica postavim kontrolu, on ju prebaci na drugu... nisam se puno igrao jer mi je PageControl sasvim OK.

Hvala na pomoći.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Određivanje vidljivog panela

[ Pregleda: 2548 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.