[ IgLo @ 25.02.2005. 17:14 ] @
Da li je neko imao ovakvih problema, a da je jos uspeo i da ih resi?

Na formi imam jedan TListView koji se zove PwdList, ViewStyle je vsReport, ReadOnly je False, ima jednu kolonu i u OnKeyDown za ListView je sledeci kod:

Code:

  Case Key Of
    vk_F2     : If (PwdList.Selected <> Nil) Then PwdList.Selected.EditCaption;
    vk_Escape : Close;
    vk_Return : btn_Unlock.Click;
    vk_Delete : mnu_DeleteClick (Self);
  End;

1. problem:
Za vreme editovanja Captiona nekog Item-a (znaci kada pritisnem F2 na njega),KeyDown se poziva kada pritisnem Delete, ali se ne poziva kada pritisnem Escape ili Enter.

Kako da detektujem da li je pritisnuto Esc ili Enter? Moguce je preko OnEdited eventa, ali samo u slucaju da sam napravio neke izmene. Ako ne napravim nikakve izmene nego recimo samo kopiram sadrzaj, event se ne poziva.

Usput, iz ovog primera, malo glupo izgleda to sto hocu da detektujem Esc i Enter, ali ima tu jos nekog koda okolo, zbog kojeg mi je potrebno.

2. problem
Kada sa Ctrl-C kopiram sadrzaj Caption-a za vreme editovanja, gube se Yu slova?!?!? Kada za vreme editovanja Caption-a ukucam YU slova, pretvore se u c, s i sl.
[ _v!rus_ @ 26.02.2005. 05:57 ] @
TListView kontrola dok je u captionedit rezimu ima svoju obradu za enter i esc (snimi izmenu i ponisti izmenu captiona) ali izgleda da "guta" tu poruku posle obrade. E sad, zavisi sta hoces da uradis sa enter i esc, ali bi neko univerzalno resenje bilo presretanje i prosledjivanje same poruke o pritisnutom tasteru pre nego sto poruka dodje do TListView kontrole, a to mozes postici sa npr. TApplicationEvents kontrolom.
[ IgLo @ 26.02.2005. 11:43 ] @
Citat:

a to mozes postici sa npr. TApplicationEvents kontrolom.

Svaka cast za ovo,... Upalilo je, nisam nikada koristio TApplicationEvents, zapravo nisam ni znao da postoji, ovo mi resava jos gomilu drugih problema.

Ako nekome nekada bude trebalo isto ovo sto i meni, evo je procedura:

Code:

procedure TMainForm.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  If Editing And (Msg.message = WM_KEYDOWN) And
     ((Msg.wParam = VK_RETURN) Or (Msg.wParam = VK_ESCAPE)) Then
      Editing := False;
  Hendled := False;
end;


Ostaje jos ono sa YU slovima, ako neko ima neku ideju
[ _v!rus_ @ 26.02.2005. 15:39 ] @
Citat:

nisam nikada koristio TApplicationEvents, zapravo nisam ni znao da postoji, ovo mi resava jos gomilu drugih problema.

:)))))))))))))))))))
i ja sam ISTO rekao...vidi samo temu DBGrid i MWheel...
http://www.elitesecurity.org/tema/96990-DBGrid-MouseWheel
(tnx2sasas)


St se tice Yu slova, VCL32 je dizajniran da radi na windowsima 4+, tako da nema punu Unicode podrsku, skini TNT kontrole sa neta http://www.tntware.com/delphicontrols/unicode/, odlicne su.
I vidi temu http://www.elitesecurity.org/tema/97551-tabele-nasa-slova
(tnx2engineer).