[ _v!rus_ @ 20.02.2005. 19:34 ] @
Imam sledeci problem:

Code:

proc Kontrola.KeyDown
begin
  if Key = VK_RETURN then
  begin
    ...
    ...
    if MessageDlg('Da li zelite opet?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
      ...
  end;
end;


Problem je sto ako se stisne Enter na MsgBox-u, ponovo se poziva Kontrola.OnKeyDown i posto je pritisnut enter prolazi [if Key = VK_RETURN] proveru (naravno nece ako se klikne misem dugmad u MsgBox-u)...
Probao sam i sa App.PcsMsgs posle MsgBox poziva ali ne radi...
Ima li neki nacin da ocistim bafer tastature posto ocigledno MsgBox prosledjuje poruku o pritisnutom tasteru, a ne guta poruku?
[ neor @ 20.02.2005. 19:46 ] @
Na primer:

Code:

var MozeDalje:Boolean;

proc Kontrola.KeyDown
begin
  if (Key = VK_RETURN) and MozeDalje then
  begin
    ...
    ...
    MozeDalje := False;
    if MessageDlg('Da li zelite opet?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
      ...
    MozeDalje := True;
  end;
end;

[ _v!rus_ @ 20.02.2005. 20:01 ] @
Ne razumes, tako nece ni doci do msgbox-a prilikom pritiskanja entera, nema nacina da odredim da li je enter stisnut u kontroli ili u msgbox-u.
[ engineer @ 20.02.2005. 20:21 ] @
Citat:
_v!rus_: Imam sledeci problem:
Code:

proc Kontrola.KeyDown
begin
  if Key = VK_RETURN then
  begin
    ...
    ...
    if MessageDlg('Da li zelite opet?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
      ...
  end;
end;
Erm, kod mene to radi OK...
[ _v!rus_ @ 20.02.2005. 22:12 ] @
Jao!
Ovde sam napisao Kontrola.OnKeyDown, a u mom kodu gde je problem stoji Kontrola.OnKeyUp... idiot...

Sada radi, hvala!

...samo teorijski...problem i dalje stoji...
Code:

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_RETURN then
    MessageDlg('Da li zelite opet', mtInformation, [mbYes, mbNo], 0);
end;



[ Rapaic Rajko @ 23.02.2005. 08:39 ] @
Code:

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var aevent: TKeyEvent;
begin
  if Key = VK_RETURN then begin
    aevent := Edit1.OnKeyUp;
    Edit1.OnKeyUp := nil;
    MessageDlg('Da li zelite opet', mtInformation, [mbYes, mbNo], 0);
    Edit1.OnKeyUp := aevent;
end;


Ovo bi trebalo da odradi. Samo, moram da kazem da je ipak neubicajeno da se dijalozi ispucavaju na ovakvim mestima...

Rajko
[ _v!rus_ @ 23.02.2005. 13:03 ] @
Zasto neobicno?
To je bio samo deo veceg koda koji radi pretragu, samo sam izolovao problem radi lakse ilustracije. Kada dodje do kraja pretrage program pita da li korisnik zeli da pretrazuje opet od pocetka...