Avatar billede hugopedersen Nybegynder
29. september 2011 - 17:10 Der er 7 kommentarer og
1 løsning

Lave Enter om til Tab

Jeg har en form med et TDBGrid på hvor jeg gerne vil have det sådan at når man trykker enter så skifter den til næste kolonne. Svarende til at trykke på Tab.
Jeg har prøvet nedenstående på formens FormKeyPress og jeg kan også se at den reagerer på enter, men den 'Tabber' ikke.

if Ord(Key) = 13 then
  begin
    Perform(CM_DIALOGKEY, VK_TAB, 0);
    Key := #0
  end;

Hvordan får man det til at fungere?
Avatar billede kroning Nybegynder
29. september 2011 - 21:54 #1
Der findes sikkert en enklere metode:

    if Key=#13 then
  begin
      if DBGrid1.SelectedIndex<DBGrid1.FieldCount-1 then
            DBGrid1.SelectedIndex:=DBGrid1.SelectedIndex+1
    else
    begin
            DBGrid1.DataSource.DataSet.Next;
      DBGrid1.SelectedIndex:=0;
    end;
        Key := #0
  end;
Avatar billede hugopedersen Nybegynder
30. september 2011 - 08:08 #2
Det ser da ud til at være en løsning.
Så det afkræver et svar :-)
Avatar billede kroning Nybegynder
30. september 2011 - 08:49 #3
ok, svar.
Avatar billede hugopedersen Nybegynder
30. september 2011 - 08:54 #4
DBGrid er meget anderledes at arbejde med end når man er vant til M$ Access :-)
Lige nu sidder jeg og prøver at få den til at highlighte selected row, men kan kun få den til at gøre det med et enkelt felt.

procedure TfrmTransactions.grdTransactionsDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if qryTransaction.RecNo Mod 2 = 0 then
    grdTransactions.Canvas.Brush.Color := clSilver
  else
    grdTransactions.Canvas.Brush.Color := clDkGray;
  if (gdSelected in State) then
    grdTransactions.Canvas.Brush.Color := clHighlight;
  grdTransactions.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

Det 'sjove' er at jeg ikke kan se forskel på de linier der angiver farver. Men de første giver ganske fint 2 forskellige farvede linier, men den sidste farver kun et felt.  Jeg undres. Men jeg finder nok de vise sten en dag :-)
Avatar billede kroning Nybegynder
30. september 2011 - 09:12 #5
Jeg har aldrig brugt DBGrid da jeg syntes den er underlig, så jeg bruger altid ListView i stedet og fylder data i den manuelt.
Avatar billede hugopedersen Nybegynder
30. september 2011 - 09:16 #6
OK - men det må være lidt besværligt at rette data 'online' så.
Avatar billede kroning Nybegynder
30. september 2011 - 09:46 #7
Det kræver lidt flere linier kode men så har man 100% styr på hvad der sker og hvornår det sker. Jeg har aldrig brugt nogen af DB komponenterne.
Avatar billede hugopedersen Nybegynder
30. september 2011 - 09:51 #8
OK
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