dbgrid de bir sonraki satır

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

dbgrid de bir sonraki satır

Mesaj gönderen selman »

selamunaleykum
arkadaşlar hekrese iyi çalışmalar
dbgridde diyelim 10 tane kayıt var(aslında tabloda varda)dbgridde gösterilidği için 10 tane satır dolu diyelim.Şimdi ben dbgridin 1.satırına geldim diyelim. ve fieldler arası enterla geçiş yapılyıro.enter,enter fealn diye 1.satırın son fieldine gelindiğinde entera bastığımızda 2.satıra geçsin.
11.satıra cursor konumlanmasın naısl yapılabilir.herkese kolay gelsin iyi çalışmalar
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
oncolumnexit diye bi olay olması lazım. onu kullanabilirsin 10.columndan çıktığı zaman tabloyu next yaparsın selectedindex (olması lazım)onuda 0 yaparsın. bir sonraki satır ilk alana geçmiş olur.
enterla geçme işleminide keydown/keypres olayında selectedindex i bir arttırarak yapabilirsin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selamunaleykum hocam
verdiğiniz bilgi için tşkederim.
fakat hocam nasıl yapacağımdan tam emin değilim .ve konuda birazdaha aydınlatabilirseniz sevinir.Kolay gelsin
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam

Kod: Tümünü seç

 if Key = #13 then
  begin
    if RzDBGrid1.Columns.Grid.SelectedIndex < RzDBGrid1.Columns.Count-1 then
      RzDBGrid1.Columns[RzDBGrid1.Columns.grid.SelectedIndex + 1].Field.FocusControl
    else
    begin
      datamodule1.IBDataSet2.Next;
      RzDBGrid1.Columns[0].field.FocusControl;
    end;
  end;
bu kodla neden colonları tek tek değilde 2.şerli atlıyo.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

merhaba
bu şekilde sorunumu haleetim

Kod: Tümünü seç

procedure Tcislem.RzDBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    if RzDBGrid1.Columns.Grid.SelectedIndex < RzDBGrid1.Columns.Count-1 then
      RzDBGrid1.Columns[RzDBGrid1.Columns.grid.SelectedIndex ].Field.FocusControl
    else
    begin
      datamodule1.IBDataSet2.Next;
      RzDBGrid1.Columns[0].field.FocusControl;
    end;
  end;
bu şekilde yaptım satır satır gidebiliyorum fakat son satıra geldiğinde yeni bir satır açıp kaydetme olayını yapamadık .yardım edecek olanlara şimdiden tşk.ler.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

datamodule1.IBDataSet2.Next; dediğin yerde dosya sonuna gelinip gelinmediğini (EOF) kontrol edip dosya sobu ise datamodule1.IBDataSet2.Append /.Insert demen lazım..
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam
hocam öncelikle size çok tşk.ederim yazdığınız cevaptan ötürü fakat dediğiniz olay şöyle bir şeymi olmalı acaba

Kod: Tümünü seç

while not datamodule1.ibdataset2.eof then begin
//İşlemler//
datamodule1.ibdataset2.next;
end;
datamodule1.ibdataset2.append;
söyledeğiniz olay bunun gibi mi recep abi.kolay gelsin
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam
recep abi dediğiniz gibi eofla yapmaya çalıştım fakat olmadı unuttuğumuz yer neresi burda veya atladığım.

Kod: Tümünü seç

procedure Tcislem.RzDBGrid1KeyPress(Sender: TObject; var Key: Char);
begin

  if Key = #13 then
  begin
    if RzDBGrid1.Columns.Grid.SelectedIndex < RzDBGrid1.Columns.Count-1 then
      RzDBGrid1.Columns[RzDBGrid1.Columns.grid.SelectedIndex ].Field.FocusControl
    else
    begin
      datamodule1.IBDataSet2.Next;
      RzDBGrid1.Columns[0].field.FocusControl;
        if not (RzDBGrid1.Columns.Grid.SelectedIndex < RzDBGrid1.Columns.Count-1) and (datamodule1.IBDataSet2.eof) then  begin
     datamodule1.IBDataSet2.Insert;
     datamodule1.IBDataSet2.Append;
     end;
     end;
    END;
   end;





end.
kolay gelsin
ZER0
Üye
Mesajlar: 24
Kayıt: 09 Tem 2005 10:14
Konum: İst/Maltepe

Mesaj gönderen ZER0 »

O zaman sende dbgriddeki satır sayısını al ve eğer seçili satır index toplam satıra eşitse yeni bir ekleme yap.
Gökay Okutucu
Sakarya Bilgisayar Programcılığı Öğrencisi
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam
kardeş nasıl bir örnek verebilirmsin
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

merhaba...

Kod: Tümünü seç

   if not (RzDBGrid1.Columns.Grid.SelectedIndex < RzDBGrid1.Columns.Count-1) and (datamodule1.IBDataSet2.eof) then
    
Yukarıda kullandığın if not ;

datamodule1.IBDataSet2.eof 'u Delphi ,tersi gibi algılıyabilir yani
datamodule1.IBDataSet2.bof gibi...if kullanımını kontrol et..
Deneme şansım yok delphi kurulu değil...

Kod: Tümünü seç


  datamodule1.IBDataSet2.Insert; 
  datamodule1.IBDataSet2.Append; 
Burada 2 tane kullanmana gerek yok araya eklemek istiyorsan,
datamodule1.IBDataSet2.Insert;
Sona eklemek istiyorsan..
datamodule1.IBDataSet2.Append; kullanman gerekir..

iyi günler...
ZER0
Üye
Mesajlar: 24
Kayıt: 09 Tem 2005 10:14
Konum: İst/Maltepe

Mesaj gönderen ZER0 »

Kod: Tümünü seç

type
  TFake = class(TDBGrid);

procedure TForm1.DBGrid1ColEnter(Sender: TObject);
begin
  label1.Caption :=format('Sütun: %2d;  Satır: %d',[TFake (DBGrid1).Col,TFake (DBGrid1).row]);
end;

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
  DBGrid1ColEnter(sender);
end;
Bu kodla satır ve sutun numaralarını öğrenebilirsin.
Gökay Okutucu
Sakarya Bilgisayar Programcılığı Öğrencisi
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam
kardeş gönderdiğiniz kodu çalıştıramadım Tface de hata verdi
ZER0
Üye
Mesajlar: 24
Kayıt: 09 Tem 2005 10:14
Konum: İst/Maltepe

Mesaj gönderen ZER0 »

Kod: Tümünü seç

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, StdCtrls, Grids, DBGrids;

type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    Label1: TLabel;
    DataSource1: TDataSource;
    Table1: TTable;
    procedure DBGrid1ColEnter(Sender: TObject);
    procedure DataSource1DataChange(Sender: TObject; Field: TField);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

type
  TFake = class(TDBGrid);

procedure TForm1.DBGrid1ColEnter(Sender: TObject);
begin
  label1.Caption :=format('Sütun: %2d;  Satır: %d',[TFake (DBGrid1).Col,TFake (DBGrid1).row]);
end;

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
  DBGrid1ColEnter(sender);
end;

end.
Gökay Okutucu
Sakarya Bilgisayar Programcılığı Öğrencisi
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam
kardeş çok tşk.ederim gönderdiğiniz kod çalıştı bu kod ile satır ve sutun sayısı alınabiliyor dbgridde.peki bunu enter olayına nasıl adepte edeceğiz yani mesela şu satırla sutuna geldiğinde kayıt işlemine başlansın gibi.kolay gelsin.
Cevapla