Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 9 odgovora
  • 4.001 pregleda

Najnovija ↓

Određivanje vidljivog panela 27.01.2010. u 11:02 · pre 204 meseca #1
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.
Re: Određivanje vidljivog panela 27.01.2010. u 12:01 · pre 204 meseca #2
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 ....
Potpis
ERROR974
Re: Određivanje vidljivog panela 27.01.2010. u 12:27 · pre 204 meseca #3
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.
Re: Određivanje vidljivog panela 27.01.2010. u 12:34 · pre 204 meseca #4
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.
Potpis
ERROR974
Re: Određivanje vidljivog panela 27.01.2010. u 12:54 · pre 204 meseca #5
> 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);

Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Određivanje vidljivog panela 27.01.2010. u 13:05 · pre 204 meseca #6
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.
Potpis
ERROR974
Re: Određivanje vidljivog panela 27.01.2010. u 20:12 · pre 204 meseca #7
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.
Potpis
"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
Re: Određivanje vidljivog panela 27.01.2010. u 23:07 · pre 204 meseca
izmenjeno 1 put, poslednji put franjo_tahi 27.01.2010. u 23:40
  1. franjo_tahi27.01.2010. u 23:40zapis iz teksta poruke
#8
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.
Re: Određivanje vidljivog panela 28.01.2010. u 06:57 · pre 204 meseca #9
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;

Re: Određivanje vidljivog panela 29.01.2010. u 00:39 · pre 203 meseca #10
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.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme