Stringgrid Alt Satıra Geçme ile Editlerdeki Sonrakine Geçiş

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
F.Atagun
Üye
Mesajlar: 158
Kayıt: 01 Oca 2008 01:56

Stringgrid Alt Satıra Geçme ile Editlerdeki Sonrakine Geçiş

Mesaj gönderen F.Atagun »

Selamlar Değerli Dostlarım,

Forumdaki mesajlarda Stringgridde Alt Satıra Geçmeyi ve enterla sonraki editlere geçmeyi gayet güzel bir şekilde aşağıdaki kodlarla başarabildim ancak şöyle bir sorunum var.

İmleç formun başındaki editlerden sonra stringgride geliyor. Stringgridde geldiğinde ilk satırı düzeltip enter diyorum alt satıra geçiyor ama imleç stringgridden çıkıp sonraki tapstop olan kaydet butonuna geliyor. Bir türlü en son satırdan sonra kaydet butonuna gitmesini yapamadım.

Tüm stringgrid yazışmalarını okudum ama bir türlü bu çakışmayı bulamadım.

Bu sorunu nasıl çözebilirim ?

Kod: Tümünü seç

procedure TForm28.StringGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
//if (key = vk_return) and (StringGrid1.Col < StringGrid1.ColCount-1) then
//  StringGrid1.Col:=StringGrid1.Col+1;  // yan hücreye geç
if (key = vk_return) and (StringGrid1.Row < StringGrid1.RowCount-1) then
 StringGrid1.Row:=StringGrid1.Row+1;   // Bir satır alta geç
end;

Kod: Tümünü seç

procedure TForm28.FormKeyPress(Sender: TObject; var Key: Char);
begin
    if (Key = #13) then
    begin
    Key := #0;
    Perform(WM_NEXTDLGCTL, 0, 0);
    end;
end;

Selamlar , Sevgiler
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Stringgrid Alt Satıra Geçme ile Editlerdeki Sonrakine Geçiş

Mesaj gönderen Battosai »

Birde böyle dene...ben denemedim kesin çalışır demiyorum gelişine yazdım....

Kod: Tümünü seç

procedure TForm28.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if (ActiveControl<>Stringgrid) or (StrinGrid.row<=stringgrid.rowcount-1) then
  begin
    if (Key = #13) then
    begin
    Key := #0;
    Perform(WM_NEXTDLGCTL, 0, 0);
    end;
  end;
end;
F.Atagun
Üye
Mesajlar: 158
Kayıt: 01 Oca 2008 01:56

Re: Stringgrid Alt Satıra Geçme ile Editlerdeki Sonrakine Geçiş

Mesaj gönderen F.Atagun »

@Battosai Hocam bu şekilde olmuyor.

Aslına bakarsan ben bu işin Nasıl olacak mantığını da kuramadım . Nasıl olacak bu ?
F.Atagun
Üye
Mesajlar: 158
Kayıt: 01 Oca 2008 01:56

Re: Stringgrid Alt Satıra Geçme ile Editlerdeki Sonrakine Geçiş

Mesaj gönderen F.Atagun »

Arkadaşlar bu sorunu bir türlü çözemedim :(

Lütfen yol gösterin
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Stringgrid Alt Satıra Geçme ile Editlerdeki Sonrakine Geçiş

Mesaj gönderen aslangeri »

s.a.
strigngridin onkeydown olayı:

Kod: Tümünü seç

procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (key = vk_return) then
  Begin
    if (StringGrid1.Col < StringGrid1.ColCount-1)
       then StringGrid1.Col:=StringGrid1.Col+1  // yan hücreye geç
       else Begin
              if StringGrid1.Row < StringGrid1.RowCount-1
                 then Begin
                        StringGrid1.Row:=StringGrid1.Row+1  //altsatıra geç
                        StringGrid1.Col:=1;  //ilk sütuna geç
                 end
                 else btnKaydet.SetFocus;  //sonsatır son hücreye gelince kaydet butonuna geçiyor

            end;
  end;
end;
formun keypreview özelliği true olacağı için önce formun keydown olayı çalışacaktır.
bu durumda formun keydown olayında bizim stringgridimiz aktifse çalışmasını engelleyeceğiz.

Kod: Tümünü seç

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if (Key = vk_return) then
    begin
      if not (activecontrol.Name='StringGrid1') then
      begin
        Key := 0;
        Perform(WM_NEXTDLGCTL, 0, 0);
        Label1.Caption:=timetostr(now);
      end;
    end;
end;
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
aseka

Re: Stringgrid Alt Satıra Geçme ile Editlerdeki Sonrakine Geçiş

Mesaj gönderen aseka »

Sevgili Caylaq, yapmak istediğini anladım ama niye keydown ile keypress'i aynı anda kullandığını anlayamadım.

Eğer yapmak istediğin grid'in en son satırında enter'a tıklandığında bir sonraki tabstop bileşenine gitmek ise keypress olayına yazdığın kodları silip, keydown olayını aşağıdaki gibi düzenlersen sorunun çözülür.

Kod: Tümünü seç

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

  if (key = vk_return) and (StringGrid1.Row < StringGrid1.RowCount-1) then
    StringGrid1.Row:=StringGrid1.Row+1
  else if (key = vk_return) and (StringGrid1.Row = StringGrid1.RowCount-1) then
    Perform(WM_NEXTDLGCTL, 0, 0);

end;
F.Atagun
Üye
Mesajlar: 158
Kayıt: 01 Oca 2008 01:56

Re: Stringgrid Alt Satıra Geçme ile Editlerdeki Sonrakine Geçiş

Mesaj gönderen F.Atagun »

A.S. Değerli dostlarım @aslangeri , @aseka ;

İlginiz için çok teşerkkür ederim.


@Aseka Arkaşımızın methodu ile beceremedim ancak @aslangeri üstadımızın yoluyla başarabildim.

Çok teşerkkürler, Programımızı kullanım aşamasında büyük bir yükten kurtarmış oldunuz bizleri.

Allah Sizlerden Razı olsun.

Böylecene bir sorunumuz daha çözülmüş oldu. Tekrar teşekkürler


Sevgiyle kalın, hoşçakalın


.
aseka

Re: Stringgrid Alt Satıra Geçme ile Editlerdeki Sonrakine Geçiş

Mesaj gönderen aseka »

Vermiş olduğum kodun iş görmemesi mümkün değil.

Denedim öyle yazdım.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Stringgrid Alt Satıra Geçme ile Editlerdeki Sonrakine Geçiş

Mesaj gönderen aslangeri »

sevgili @aseka sanırım sütunları unuttuğun için olmadı...
birde senin test ortamın ile @Caylaq ın ortamı farklı olabilir.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
aseka

Re: Stringgrid Alt Satıra Geçme ile Editlerdeki Sonrakine Geçiş

Mesaj gönderen aseka »

Soru, "Stringgrid Alt Satıra Geçme..." şeklinde olduğu için sütunlarla ilgisi yok.

Verdiğim örnek de test ortamından bağımsız sade bir koddur. Platformlar arası ileri düzey bir kod da değildi.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Stringgrid Alt Satıra Geçme ile Editlerdeki Sonrakine Geçiş

Mesaj gönderen aslangeri »

sence string gridde tek bir sütun mu var?
gönderilen kodlara bakarsan orda sütunlarda artmış. eleman sütünlar arasında gezinmiş satırlar atlatamamış. onun için soruda sütun yok.
senin gönderdiğin kodu alıncada sadece satırlar atlıyor sütunları atlatamıyor.
formun keypreviewi true formda sadece stringgrid yok. formda bileşenler arasında enter tuşu ile geziliyor. bu durumda stringgridin keydownu doğru çalışırmı.
ortam ve platformlar farklı şeyler.
vs.vs.vs.vs.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
aseka

Re: Stringgrid Alt Satıra Geçme ile Editlerdeki Sonrakine Geçiş

Mesaj gönderen aseka »

Gönderilen kodlara dikkatlice bakarsan sütunları artıran kod parçası pasif edilmiş. Yani sorunun sütun arttırmakla ilgisi yok.

Formun keypreview özelliği ister true, ister false olsun; formun üzerinde sadece stringrid değil isterse yüzlerce bileşen olsun, bileşenler arasındaki geçişi ister enter tuşu ister ok tuşları ile yapsın, verdiğim kodu ister hava ortamında ister su ortamında denesin, ne yaparsa yapsın bu kodun işe yaramaması mümkün değil.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Stringgrid Alt Satıra Geçme ile Editlerdeki Sonrakine Geçiş

Mesaj gönderen aslangeri »

@Aseka Arkaşımızın methodu ile beceremedim....
havada ve suda işe yarayan kodlar arkadaşın bilgisayarında işe yaramadı demekki.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
aseka

Re: Stringgrid Alt Satıra Geçme ile Editlerdeki Sonrakine Geçiş

Mesaj gönderen aseka »

Niye işe yaramadığı o arkadaşın imzasında çok açık olarak belirtilmiş zaten.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Stringgrid Alt Satıra Geçme ile Editlerdeki Sonrakine Geçiş

Mesaj gönderen conari »

Ortalık baya karışmış . Olaya noktayı koyalım. :mrgreen:
10. satır 10 sütun lu gridde ve 10 sütun tek satırlı grid de denedim .
@Aseka'nın kodlar çalışmıyor.
@Aslangeri'nin kodları çalışıyor.
:D
Form keypreview true
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kilitli