Novo

Forum kao aplikacija na telefonu

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

  • 7 odgovora
  • 4.046 pregleda

Najnovija ↓

Poruke 15.01.2003. u 14:39 · pre 289 meseci #1
Kako da presretnem poruku koje je poslata mom prozoru .Da proverim da nije stetna za moj program i onda da odlucim dali da je propustim ili ne.
Konkretan primer zelim da moj sakriveni prozor ostane sakriven bez obzira dali mu neko salje poruku da postane vidljiv.
Re: Poruke 16.01.2003. u 10:15 · pre 289 meseci #2
Vrlo lako. Pogledaj u helpu WindowProc i WndProc (ako se ne varam, klasa TControl). Imas potpunu kontrolu nad svim porukama koje dobijas od sistema.

Rajko
Re: Poruke 16.01.2003. u 13:07 · pre 289 meseci #3
Probao sam sa WinProc i to radi ali samo za Formu dok dugmad i drugi objekti postaju vidljivi.Sto znaci da bi trebao da pravim procedru za svaku komponentu.Meni treba neki laksi nacin koji ce preko jedne funkcije kontroklisati ceo prozor i sve njene komponente.
Re: Poruke 17.01.2003. u 20:46 · pre 289 meseci #4
Vidis, zaboravio sam da to tako radi sa porukama. Znaci, sub-kontrole ce primiti nezavisno svoje poruke i odreagovati na njih. Ali, mozda ima resenje i za to...

Evo ideje. Napravio si svoju WndProc proceduru za formu, OK. Sada stupa na scenu WindowProc. WindowProc je POINTER koji gadja na WndProc. Vec naslucujes; sa WindowProc mozes da podmetnes svoju 'WndProc-like' proceduru koja ce da radi kako ti hoces, ali moze i da poziva default WndProc gde treba.
Dakle, smisli nacin da proceduru WndProc tvoje forme podmetnes (preko pointera WindowProc) svim njenim sub-kontrolama (a takodje i sub-kontrolama tih kontrola), i resio si problem. Ne bi trebalo da je tesko: mala rekurzivna metodica i to je to.
Pozdrav

Rajko
Re: Poruke 21.01.2003. u 12:29 · pre 289 meseci #5
Probao sam i tu varijantu ali mi prijavljuje gresku ' Stack Overflow' .
Re: Poruke 22.01.2003. u 22:47 · pre 289 meseci #6
'Stack overflow' znaci da si se zeznuo u rekurziji. Prekontrolisi ponovo metod za dodeljivanje svog handler-a sub-kontrolama, pa ako ne resis, baci kod na grupu da ga razbijemo.
Pozdrav

Rajko
Re: Poruke 24.01.2003. u 19:30 · pre 289 meseci #7
Ok, malo sam pogledao po kodu u vezi ovog problema; ima zez. Evo o cemu se radi: jednim handler-om ne mozes pozivati default handler-e vise razlicitih kontrola. Ali, i tu ima leka; evo ti jedan predlog:

1) na tvojoj formi napravis jedan property CurControl tipa TControl;
2) prepravis tvoju WndProc proceduru od forme tako da izgleda kao nesto ovako:

procedure TMyForm.WndProc(var Message: TMessage);
begin
GetParentForm(self).CurControl := self;
DoWndProc(Message);
end;

procedure TMyForm.DoWndProc(var Message: TMessage);
begin
if .... then // neki tvoj uslov oko message-a
else
CurControl.WndProc(Message); // default handler doticne kontrole
end;

function GetParentForm(acontrol: TControl): TMyForm;
begin
if acontrol is TMyForm then
result := acontrol
else
result := GetParentForm(acontrol);
end;

3) ovo je pisano iz glave (na brzinu), ali moze da se osposobi da radi. Probaj, pa javi sta si uradio.

Pozdrav

Rajko
Re: Poruke 24.01.2003. u 19:33 · pre 289 meseci #8
Ne, ni ovaj primer ne valja; batali moju gornju poruku. Uh, nemam dovoljno vremena da se ozbiljno posvetim tvom problemu, jer radim od jutra do sutra.
Kad nadjem vremena, smislicu ti resenje.
Poz,

Rajko
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme