Delphi Can

Orjinalini görmek için tıklayınız: dbgrid de sağ sol tuşlarını kullanma
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Arkadaşlar,

dbgrid de düzenleme yapıyorum düzenleme yaparken sağdaki veya soldaki veya yukarıdaki hücreye geçmek istiyorum  sağ sol tuşlarını nasıl kullanabilirim dbgrid keypress olayına nasıl birşey yazabilirim ?

Teşekkürler.
dbgrid options seçeneklerinde dgRowSelect özelliği false değerinde ise dbgrid üzerine odaklanınca klavyedeki sağ sol yukarı aşağı tuşlarını kod yazmadan kullanabilirsin. Bunun için ek bir kod yazmanıza gerek yok odaklandığınız hücrenin içeriğini değiştirmek içinde enter yapmanız yeterli.
edit ederken dahi sağ sol tuşları işlemesini istiyorum sadece yukarı aşağı değil sağa sola da işlemeli

dbgrid seçeneklerindeki dgRowSelect özelliği false ama sadece aşağı yukarı çalışır.

Teşekkürler
(03-04-2018, Saat: 11:06)erdogan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.edit ederken dahi sağ sol tuşları işlemesini istiyorum sadece yukarı aşağı değil sağa sola da işlemeli

dbgrid seçeneklerindeki dgRowSelect özelliği false ama sadece aşağı yukarı çalışır.

Teşekkürler


procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin

 case Key of
   VK_Left : begin
               Caption:= 'Left';
               //...
             end;
   VK_Right: begin
               Caption:= 'Right';
               //...
             end;
   VK_Up   : begin
               Caption:= 'Up';
               //...
             end;
   VK_Down : begin
               Caption:= 'Down';
               //...
             end;
 end;
 if Key in [VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN] then Key := 0; // bu tuşları kullandık, dolayısıyla aynı tuşa iki kere basmak istemeyiz...
end;
çok teşekkür ederim oldu

begin
case Key of
VK_Left : begin
dbgrdPUANTAJ_LISTESI.SelectedIndex := dbgrdPUANTAJ_LISTESI.SelectedIndex+1
end;
VK_Right: begin
dbgrdPUANTAJ_LISTESI.SelectedIndex := dbgrdPUANTAJ_LISTESI.SelectedIndex-1
end;
VK_Up : begin
QRY_PERSONEL_PUANTAJ_DB.Prior;
end;
VK_Down : begin
QRY_PERSONEL_PUANTAJ_DB.Next;
end;
end;
if Key in [VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN] then Key := 0; // bu tuşları kullandık, dolayısıyla aynı tuşa iki kere basmak istemeyiz...
end;
type
  THackDBGrid = Class(TCustomDBGrid);
.
.
.

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);
 var
   row  : integer;
begin
 if (Sender as TDBGrid).DataSource.DataSet.RecordCount>0 then // Kayıt olması şartı
 begin
   with (Sender as TDBGrid).Canvas do // Tek çift satırları renklendirmek için
   Begin
     row := (Sender as TDBGrid).DataSource.DataSet.RecNo;
     if Odd(row) then Brush.Color := $00E1D7D5
     else             Brush.Color := $00C0F1B1;
   End;
   with THackDBGrid(Sender) do
   begin
     if DataLink.ActiveRecord = Row - 1 then //Seçili satır işlemleri başlangıcı
     begin
       Canvas.Brush.Color  := $00F29328;
       Canvas.Font.Color   := clWhite;
       Canvas.Font.Size    := 12;
       if (gdFocused in State) then  //Seçili hüçre işlemleri
       Begin
         Canvas.Font.Color   := clBlack;
         Canvas.Brush.Color  := clRed;
       End;
     end
     else // Seçili olmayan satırlar için
     Canvas.Font.Size      := 10;
   end;
   (Sender as TDBGrid).DefaultDrawColumnCell(Rect, DataCol, Column, State); // yapılan işlemlerin gride aktarılması
 end;
end;


Ne işe yarar;
Tek ve çift satırlara farklı renk ataması yaparak ayrıştırma.
RowSelect özelliğini gibi seçili satırın boyanması.
Seçili satırın font size yükseltilmesi, Font color değiştirilmesi.
Seçili hücrenin farklı bir rek alması,
çok teşekkürler elinize sağlık