Avatar billede hugopedersen Nybegynder
07. september 2011 - 17:02 Der er 2 kommentarer og
1 løsning

Forskel på kode?

Hvad er forskellen på at trykke på ESC med følgende kode og så at trykke på krydset?

procedure TfrmCalendarYear.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Ord(Key) = 27 then
    begin
      Close;
    end;
end;

Hvis jeg trykker på krydset får jeg ingen fejl, men hvis jeg trykker på ESC så får jeg en Access violation i mit datagrid.
Avatar billede martinlind Nybegynder
07. september 2011 - 17:28 #1
prøv med en message til din form i stedet. evt. kan du måske blive klogere på at læse lidt om CloseQuery(), men mon ikke det er noget med datagridet der halter :-), der er også mulighed for at bruge Release ... hvis den stadig findes
Avatar billede hugopedersen Nybegynder
07. september 2011 - 17:43 #2
Jeg tror jeg har fundet fejlen nu

På KeyPress af gridet er der  if (key = Chr(9)) then Exit;
Det er noget jeg har sakset fra About.com for at kunne have en checkbox på.

Hvis jeg laver det om til
if (key = Chr(9)) or (key = Chr(27)) then Exit;
så forsvinder fejlen!

Koden efterfølges så af
  if (grdCalendarYear.SelectedField.FieldName = chkDaySpecial.DataField) then
    begin
      chkDaySpecial.SetFocus;
      SendMessage(chkDaySpecial.Handle, WM_Char, word(Key), 0);
    end;
Avatar billede hugopedersen Nybegynder
12. september 2011 - 18:46 #3
Som nævnt var det en fejl jeg selv kunne rette da det var mig selv der havde lavet den :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester