Novo

Forum kao aplikacija na telefonu

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

  • 7 odgovora
  • 2.324 pregleda

Najnovija ↓

Korisnička kontrola - prosljeđivanje event-a 02.05.2016. u 14:26 · pre 127 meseci #1
Moja kontrola je nasljednik tCustomButton-a
Na nju je stavljena tImage

Prosljedio sam OnClick i OnMouseDown sa tImage na tPanel, to radi, okinu se oba eventa gumba nakon pritiska na sliku isto kao da je pritisnuto na gumb.

Zanima me:
kako dobiti da se nakon pritiska miša na tImage sam gumb ponaša kao da je pritisnum miš na njemu, tj, da se promjeni slika kao kod Click-a na njega (dojam da je fizički gumb pritisnut te da je "upao")?
Re: Korisnička kontrola - prosljeđivanje event-a 03.05.2016. u 08:38 · pre 127 meseci #3
OnClick je prosljeđen na tCustomButton i on se okine, ali vizualno se button ne "spusti" kad se na tImage pritisne mišem (onako kako se "spusti" kad se pritisne lijevom tipkum miša ba button i ostane "dolje" tako dugo dok se ne pusti tipka miša)

Znači, nije problem event. On se okine i obavi što treba, već izgled gumba pri pritisku na Image koji je na gumbu.
Re: Korisnička kontrola - prosljeđivanje event-a 03.05.2016. u 14:49 · pre 127 meseci #4
Dakle ti imas, sliku koja stoji u buttonu ali iznad njega?
Onda je najlakse da slika "propusti" klik do kontrole ispod (buttona). Umesto TImage, napravi i koristi novu kontrolu izvedenu iz nje, koja će samo handlovati WM_NCHITTEST poruku i vratiti HTTRANSPARENT kao rezultat.
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: Korisnička kontrola - prosljeđivanje event-a 03.05.2016. u 14:55 · pre 127 meseci #5
Updejt, umesto WM_NCHITTEST možda ćeš morati da hendluješ CM_HITTEST poruku (isprobaj već koju dobijaš).
Alternativa za pravljenje izvedene image kontrole je da handluješ subclasuješ WindowProc i onda tako hendluješ te poruke.
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: Korisnička kontrola - prosljeđivanje event-a 04.05.2016. u 21:04 · pre 127 meseci #6
savkic, ovo nisam potpuno razumio.

Pokušaso sam sa prosljeđivanjem, na formi - lakše nego u kontroli na način:

- na formi su 2 gumba
- na gumbu Button1 koristim OnMouseDown i OnMouseUp

Code:

procedure TForm2.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
   SendMessage(Button2.Handle, WM_LBUTTONDOWN, 10, 10);
end;

procedure TForm2.Button1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
   SendMessage(Button2.Handle, WM_LBUTTONUP, 10, 10);
end;


Kada prisnem lijevu tipku miša na Button1:
- Button2 dobije fokus
- okine se Button2.OnMouseDown

Button2 vizualno ne simulira MouseDown, tj. ne dobije izgled kao da je prisnut.


Re: Korisnička kontrola - prosljeđivanje event-a 04.05.2016. u 21:19 · pre 127 meseci #7
Riješeno... možda nekome pomogne:

U kontrolu slike sam dodao:
Code:

..
     procedure CMHitTest(var Message: TCMHitTest); message CM_HITTEST;
..

procedure tMyImage.CMHitTest(var Message: TCMHitTest);
begin
   Message.Result := HTNOWHERE;
end;



Iskušao sam - radi. Pritisak na Image, simulira pritisak na button.

Jel OK ili treba drugačije?
Re: Korisnička kontrola - prosljeđivanje event-a 04.05.2016. u 21:41 · pre 127 meseci #8
> Iskušao sam - radi. Pritisak na Image, simulira pritisak na button.
> Jel OK ili treba drugačije?

To sam i imao na umu, s tim što bih ja stavio da vraća HTTRANSPARENT jer je tako prema dokumentaciji.
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
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme