Cursor Edit Konumlandırma [Çözüldü]

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Cursor Edit Konumlandırma [Çözüldü]

Mesaj gönderen ozcank »

Arkadaşlar Form da arama yapmak için F2 tuşuna basıldığında GroupBox1 açılıyor ve içerisinde Edit5.Text ve DBGrid1 var ama ben F2 bastığım zaman GroupBox1 aktif oluyor fakat cursor Edit5 de değilde Edit1 de duruyor nasıl yönlendirebilirim yardımcı olur musunuz?

Kod: Tümünü seç

procedure TForm3.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if key=vk_f2 then
GroupBox1.Visible:=True;
end;
En son ozcank tarafından 21 Kas 2016 02:11 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
ogzark
Üye
Mesajlar: 6
Kayıt: 14 Kas 2016 03:04

Re: Cursor Edit Konumlandırma

Mesaj gönderen ogzark »

procedure TForm3.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if key=vk_f2 then
GroupBox1.Visible:=True;
edit1.SetFocus;
end;
zengin
Üye
Mesajlar: 233
Kayıt: 06 Ağu 2003 10:13

Re: Cursor Edit Konumlandırma

Mesaj gönderen zengin »

s.a

Kod: Tümünü seç

Edit5.SetFocus; 
olarak kullan
Zengin
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Cursor Edit Konumlandırma

Mesaj gönderen ertank »

Merhaba,

Form üzerinde her bir focus kabul eden bileşenin TabOrder parametresi vardır. GroupBox içinde ilk focus alacak bileşen TabOrder değeri 0 olan bileşendir. Muhtemelen sizin Edit1.TabOrder = 0 ve Edit5.TabOrder > 0 şeklinde bir değer.

Eğer Object Inspector içinde Edit5 bileşeninin TabOrder değerini 0 yaparsanız ilave kod yazmaya gerek kalmadan istediğinizi elde edebilirsiniz.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Cursor Edit Konumlandırma

Mesaj gönderen ozcank »

ertank kardeşim dediğini yaptım; Object Inspector değeri Edit1.TabOrder=5 di ben 0 yaptım. GrupBox1 deki Edit5 ise 0 dı zaten ama yine Edit5 e cursor gelmedi. Bu ara da 1,2,3,4,5.. denedim yine olmadı. Edit5.SetFocus; yapınca istediğim oluyor fakat DBGrid1 ekranında dolaşırken Edit5.SetFocus takılıyor. DBGrid de bir satır aşağı iniyor ikinci satır da Focus a gidiyor.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Cursor Edit Konumlandırma

Mesaj gönderen ertank »

Kod paylaşmanız mümkün mü?
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Cursor Edit Konumlandırma

Mesaj gönderen ozcank »

ertank kardeşim kod şöyle;

GroupBox1 ilk form açıldığında Visible yapıyorum.

Kod: Tümünü seç

procedure TForm3.FormActivate(Sender: TObject);
begin
GroupBox1.Visible:=False;
Sonra da Form3 de ilk Edit1 var bur da iken F2 bastığında şu kod çalışıyor ve Edit5 de öğrenci ad soyad araması yapıyor.

Kod: Tümünü seç

procedure TForm3.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 IF key=vk_f2 then  // Öğrenci Rehber
GroupBox1.Visible:=True;
Edit5.SetFocus;
end;


Edit5.SetFocus; Tamda istediğimi yapıyor fakat DBGrid1 ekranında dolaşırken devamlı setfocus a takılıyor. Setfocus kullanmadığım zaman ise F2 bastığımda Edit5 e konumlanmıyor.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Cursor Edit Konumlandırma

Mesaj gönderen ertank »

Öncelikle gönderdiğiniz kod ile ilgili;
- FormKeyDown() olayında if ifadesini begin..end bloğu içine almadığınız için Edit5.SetFocus her zaman çalışır. Eğer Edit5 GroupBox1 içinde ise ve F2 tuşuna basılmadan önce başka tuşa basılır ise hata alırsınız.
- begin..end arasında kalan kodları en az iki karakter boşluk bırakarak yazmanızda fayda var. Zira gönderdiğiniz kod bu tür formata uygun yazılmadığı için bir önceki maddede belirtilen durumu ilk bakışta algılamak kolay olamayabilir.

Yukarıdakiler göz önünde bulundurulduğu zaman FormKeyDown() olayını aşağıdaki şekilde yazmanız mümkündür.

Kod: Tümünü seç

procedure TForm3.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  // Öğrenci Rehber
  if Key = VK_F2 then GroupBox1.Visible := True;
  if Edit5.CanFocus then Edit5.SetFocus();
end;
Sorunuza gelince; ilgili DBGrid nesnesinin bağlı olduğu DataSource bileşenini incelemek gerekli. Bağlı olan DataSource olaylarından OnDataChange() veua OnUpdateData() için atanmış bir prosedür ve yazılmış bir kod var ise bu kodu/kodları da inceleyerek cevap vermek daha doğru olacaktır.

Ek olarak ilgili ekranda Master/Detail bağlantı var ise ve bahsi geçen DBGrid Master veriyi gösteriyor ise Detail veriyi gösteren ikinci DBGrid nesnesinin bağlı olduğu DataSource bileşeninin de atanmış olaylarını incelemek gerekir.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Cursor Edit Konumlandırma

Mesaj gönderen ozcank »

verdiğiniz kodu kullandım ama SetFocus dan dolayı DBGrid1 de verilerde 1 satır aşağı indiğimde Edit5 e gidiyor. DBGrid1 de herhangi bir procudure ve kod şimdilik yok.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Cursor Edit Konumlandırma

Mesaj gönderen ertank »

DBGrid1 içinde dolaşır iken Focus yine DBGrid içinde kalsın istiyor iseniz ve belirttiğiniz gibi DBGrid olayları boş ise FormKeyDown() olayının aşağıdaki şekilde değiştirilmesi gerekli.

Kod: Tümünü seç

procedure TForm3.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  // Öğrenci Rehber
  if Key = VK_F2 then 
  begin
    GroupBox1.Visible := True;
    Edit5.SetFocus();
  end;
end;
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Cursor Edit Konumlandırma

Mesaj gönderen ozcank »

Hayır DBGrid1 de dolaşırken SetFocus Edit5 e gidiyor. Bir satır aşağı iniyorum Edit5 bir satır daha iniyorum yine Edit5 ben bunu istemiyorum.
F2 basıldığında GroupBox1 açılıyor ve Edit5 de corsur konumlanınca ad soyad yazıp aramasının sonucunu DBGrid1 de görüyor ve hangisi datayı seçmek istiyorsa DBGrid1 de onun üzerinde dolaşıyor ama SetFocus her defasında Edit5 e gidiyor buda sıkıcı bir durum.

GroupBox1 içerisinde;
Edit5 ve DBGrid1 var
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Cursor Edit Konumlandırma

Mesaj gönderen ozcank »

ertank kardeşim müsaitseniz Ammy verebilirim.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Cursor Edit Konumlandırma

Mesaj gönderen ertank »

ozcank yazdı:ertank kardeşim müsaitseniz Ammy verebilirim.
Son göndermiş olduğum kodu denediniz mi?
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Cursor Edit Konumlandırma [Çözüldü]

Mesaj gönderen ozcank »

Enson göndermiş olduğunuz kod ile hallettim ertank kardeşim çok tşk.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Cursor Edit Konumlandırma [Çözüldü]

Mesaj gönderen ozcank »

Çözüldü
Cevapla