Bun venit pe SkullBox!

Bine ai venit, Vizitator. Trebuie să te autentifici sau să îţi creezi un cont.
Ai pierdut sau nu ai primit emailul care conţine codul de activare al contului?

Autentifică-te cu numele de utilizator, parola şi precizează durata sesiunii.
  Pagini: [1]
  Imprimă  
Event OnClick nefunctional ...  (Vizualizari 582)
DarkByte
*

Deconectat Deconectat

Mesaje: 2439

WWW
Event OnClick nefunctional ..., Dec 01, 2007, 14:17

Am facut un program (mai mult de curiozitate) in care am asignat pentru proprietatea Parent a unui buton un StringGrid.

Curios a fost faptul ca eventul OnClick nu se mai executa ... doar daca pun parentul sa fie forma ...

Daca stie careva de ce, please let me know.

L.E. pentru edificare, am uploadat sursele si executabilul aici. F = forma, S = string grid-ul, P = panelul.
Memorat

Light travels faster than sound. This is why some people appear intelligent until they speak.

Quidquid latinum dictum sit, altum viditur.

AdyX
*

Deconectat Deconectat

Mesaje: 1061

WWW
Event OnClick nefunctional ..., Dec 01, 2007, 17:41

That's weird...Totusi, mai ciudat e ca DarkByte cere ajutor in ceea ce priveste Delphi-ul.. Smile

Am incercat si eu...se pare ca doar pentru SpeedButton merge eventul OnClick
Memorat
DarkByte
*

Deconectat Deconectat

Mesaje: 2439

WWW
Event OnClick nefunctional ..., Dec 05, 2007, 08:49

Lol, n-am spus ca sunt master in Delphi Smile Am spus ca programez in Delphi, dar daca nu stiu ceva, e normal sa intreb, nu ? Tongue

Chestia cu SpeedButton-ul nu ma ajuta Straight face Nu ma intereseaza neaparat sa am buton intr-un StringGrid, cat explicatia pentru care nu merge OnClick cand butonul are ca parinte StringGrid-ul.

Inca ceva ... cu SpeedButton-urile se intampla destule chestii weird Tongue Merci totusi pentru incercari si timpul pierdut Smile

Bafta

L.E. inca mai astept idei.
Memorat

Light travels faster than sound. This is why some people appear intelligent until they speak.

Quidquid latinum dictum sit, altum viditur.

Shocker
*

Deconectat Deconectat

Mesaje: 410

WWW
Event OnClick nefunctional ..., Dec 05, 2007, 14:01

Momentan explicatie nu am sa iti dau, doar o alternativa: ai putea folosi onMouseDown daca e chiar atat de necesar sa faci ce vrei tu
Memorat


Just wake me up when everything's less overwhelming..., btw ShockingSoft is back !
Freakz only
Comics of the day
DarkByte
*

Deconectat Deconectat

Mesaje: 2439

WWW
Event OnClick nefunctional ..., Dec 07, 2007, 14:43

Multumesc de idee, dar am o banuiala ca nu ar merge (spun asta in perspectiva ultimelor lucruri care le stiu, nu am testat si nu cred ca voi testa).

StringGrid-ul este o componenta care nu e facuta sa includa alte componente (cum ar fi Panel-ul), in concluzie el nu trimite mai departe "copiilor lui" mesajul WM_COMMAND.

Pentru eventualitatea ca sunt interesati despre cum se poate pune un button intr-un StringGrid, iar acest button sa fie si functional, mai departe e modul de lucru.

Exista 2 solutii ... prima implica modificarea VCL-ului (mai exact grids.pas) - se va modifica eventul asignat mesajul WM_COMMAND ... nu mi se pare recomandat, dar ar putea face viata mai usoara fata de a doua metoda.

Aceasta implica crearea la runtime a StringGrid-ului si manipularea eventului de WM_COMMAND al acestuia in felul urmator:
Cod:
StrGrid = class(TStringGrid)
...
  private
    procedure WMCommand(var Message: TWMCommand); message WM_COMMAND;
...
end;
...
procedure StrGrid.WMCommand(var Message: TWMCommand);

  function DoControlMsg(ControlHandle: HWnd; var Message): Boolean;
  var
    Control: TWinControl;
  begin
    DoControlMsg := False;
    Control := FindControl(ControlHandle);
    if Control <> nil then
      with TMessage(Message) do
      begin
        Result := Control.Perform(Msg + CN_BASE, WParam, LParam);
        DoControlMsg := True;
      end;
  end;

begin
    DoControlMsg(Message.Ctl, Message);
    inherited;
end;
Functia DoControlMsg e copiata din VCL si e functia apelata de Panel in la manipularea acestui mesaj.
inherited e instructiunea care anunta compilatorul sa faca ce ar fi trebuit sa faca, in mod standard, acest event (evident, in acest caz, dupa ce am trimis noi mesajul mai departe, componentelor-copii)

Merci de intentie oricum, AdyX si Shocker.

L.E. imi cer scuze, aparent merge OnMouseDown.
Memorat

Light travels faster than sound. This is why some people appear intelligent until they speak.

Quidquid latinum dictum sit, altum viditur.

SkullAds
Ecspert
ReclAmator
* * * * *
Google AdSense

Gen: Bărbat
Mesaje: Multe

Reclama AdSense,
 

 
   


Pagini: [1]
  Imprimă  
 
Schimbă forumul:  

Ethical hacking and programming community
Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC
Traducerea în limba română © 2006-2007 www.smf.ro