keypress olayı

Katılım
20 Aralık 2006
Mesajlar
939
Excel Vers. ve Dili
türkçe
Değerli hocalarım

vb6 da oluşturdum bir formda text1 in keypress olayına

"8698" sayısı girilirse fonksiyon işlesin istiyorum tıpkı bunun gibi
Kod:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then ' Basılan Tuş Enter ise
KeyAscii = 0 'Tuşabasılmamış say
SendKeys "{TAB}" 'Ttab Tuşuna Bas
End If
End Sub
"enter" yerine

"8698 enter"

olarak yazıdığında olay gerçekleşsin istiyorum nasıl yaparım
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın Fuat Şirin,

Yine bir yerde hata var sanırım. KeyPress olayı kontrol amaçlı bir olay.

Odak bulunan bir form veya nesne üzerindeki denetimde bir tuşa bastığınızda ve daha sonra bıraktığınızda (veya bir tuş vuruşu yapmak için Tuş Gönder eylemini veya deyimini kullanırsanız) aşağıdaki sıralı olaylar oluşur:
KeyDownKeyPressKeyUp
Bir tuşa basıp serbest bıraktığınızda veya ANSI karakter kümesinde yer alan tuşla bir tuş vuruşu gönderdiğinizde, KeyDown (Tuşa Basılırken), KeyPress (Tuşa Basıldığında) ve KeyUp (Tuş Bırakılırken) olaylarının hepsi oluşur. Bir ANSI tuşuna basıp basılı tutarsanız, siz tuşu serbest bırakıncaya kadar, KeyDown ve KeyPress olayları (KeyDown, KeyPress, KeyDown, KeyPress vb.) ve ardından KeyUp olayı oluşur.
ANSI olmayan bir tuşa basıp serbest bırakırsanız, KeyDown ve KeyUp olayları oluşur. ANSI olmayan bir tuşa basarsanız ve basılı tutarsanız, tuşu serbest bırakıncaya kadar KeyDown olayı sürekli oluşur ve sonra KeyUp olayı oluşur.
Tuşa basmakla denetimin farklı bir olayı tetiklenirse, KeyPress olayından sonra, ancak KeyUp olayından önce farklı bir olay oluşur. Örneğin, Change (Değiştirme) olayını tetikleyerek, tuş vuruşu, metin kutusundaki metni değiştirirse, aşağıdaki olay dizisi oluşur:
KeyDownKeyPressChangeKeyUp
Tuş vuruşu, odağın bir denetimden diğerine taşınmasına neden olursa, ikinci denetim için KeyDown ve KeyUp olayları oluşurken ilk denetim için KeyUp olayı oluşur. Örneğin, denetim içindeki verileri değiştirirseniz ve sonra, bir sonraki denetime taşımak için SEKME tuşuna basarsanız, aşağıdaki olaylar dizisi oluşur:

  • İlk denetim: KeyDownBeforeUpdateAfterUpdateExitLostFocus
  • İkinci denetim: EnterGotFocusKeyPressKeyUp
İyi çalışmalar
 
Katılım
20 Aralık 2006
Mesajlar
939
Excel Vers. ve Dili
türkçe
Syn modalı;

ben text1 e barkod okutuyorum

text2 de adetleri yazıp işliyorum

text1de barkod okuttuğumda text2 ye geçmesini adet girersem adeti girmezsem yeni barkodu okuttuğum anda text1 e geri dönüp barkod numarasını girmesini istiyorum

şöle izah etsem daha iyi olur sanırım

text1 = 8698808001200
text2 = cursor burda olacak

tekrar barkod okutursam text2 de

8698808001200 nolu ürün işlenip yeni barkod okuttuğumu text1 e geçip

text2 de cursor hazır blunacak

yani text2 ye bir şey girmezsem 1 olarak geçecek

barkod okutursam text1 e geçecek


bunun için verdiğim numara
8698 di

saygılar hocam
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Soracağım iki soru var:

Barkod okutuyorum diyorsunuz, kodlarda bu olay nasıl görünüyor?

Veriyi nasıl kaydediyorsunuz veya kayıt tetiklenmesi nasıl oluyor?
 
Katılım
20 Aralık 2006
Mesajlar
939
Excel Vers. ve Dili
türkçe
hocam şu şekilde

Kod:
Private Sub Text1_Change()
On Error GoTo 10

Adodc3.Recordset.Filter = "BARKOD like '" & Text1.Text & "%' "
Text2 = Adodc3.Recordset.Fields(2)
Text3 = Adodc3.Recordset.Fields(3)
Text4 = Adodc3.Recordset.Fields(4)
Text5 = Adodc3.Recordset.Fields(5)
10
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then ' Basılan Tuş Enter ise
EKLE
Text1.SetFocus
End If
End Sub
Sub EKLE()
On Error Resume Next
    Adodc1.Refresh
    Adodc1.Recordset.AddNew
    Adodc1.Recordset.Fields(1) = Text7
    Adodc1.Recordset.Fields(2) = DTPicker1
    Adodc1.Recordset.Fields(3) = Text1
    Adodc1.Recordset.Fields(4) = Text2
    Adodc1.Recordset.Fields(5) = Text3
    Adodc1.Recordset.Fields(6) = Text4
    Adodc1.Recordset.Fields(7) = Text5 * 1
    Adodc1.Recordset.Fields(8) = Text6 * 1
    Adodc1.Recordset.Fields(9) = Label1 * 1
    Adodc1.Recordset.Update
    Set DataGrid1.DataSource = Adodc1
    DataGrid1.Refresh
    Form_Load
    Text7_Change

End Sub

Private Sub Text5_Change()
'hesap yapan kodlar
On Error Resume Next
deg1 = IIf(Text5 = "", 0, Text5)
deg2 = IIf(Text6 = "", 0, Text6)
Label1 = Format(Replace(CDbl(deg2) * CDbl(deg1), ".", ","), "#,##0.00")
End Sub

Private Sub Text6_Change()
Text5_Change
End Sub

Private Sub Text7_Change()
On Error GoTo 10

Adodc2.Recordset.Filter = "F_KOD like '" & Text7.Text & "%' "
Label3 = Adodc2.Recordset.Fields(2)
Adodc2.Refresh
10
End Sub
hacam tam olarak bu şekilde




Kod:
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Text2 ye değer atıyorsunuz.

Text2 = Adodc3.Recordset.Fields(2)

Şimdi fikrimi söyleyeyim:

Barkodu okuttunuz Text1 doldu o zaman Text2.SetFocus ile Text2 ye geçebilirsiniz. Ancak bu arada da Text2.Text=1 yazarsanız o zaman ilerdeki hatalardan kurtulmuş olursunuz.

Kısaca Text2 de 1 yazıyor ve fokuslanmış, eğer adet değiştirilirse ve entere basılırsa kaydetsin ve text2 ile text1 i boşaltsı yani Text1.Text="" gibi ve Text1 e fokuslansın

Şimdi text1 değişim olayına geri gelelim eğer Text2.Text boş ise o zaman Text1 barkodu yazsın değil ise işte şu an iş karıştı. Bunun için görünmez bir tane TextBox ekleyin ve ilk aşamada barkodu buraya kaydedin ve dediklerimi buraya uygulayın eğer, Text1 ve Text2 doluysa o zaman yeni kayıt eklesin iki TextBoxu boşaltıp Tetx1 e yeni barkodu eklesin aynı sırada da Text2 ye 1 i eklesin.

İyi çalışmalar
 
Katılım
20 Aralık 2006
Mesajlar
939
Excel Vers. ve Dili
türkçe
aslında hocam değiklerini yaptım
benim yapamadığım barkodla
klavyeyi ayırt etmek
ben satış işleminde sıkıntı yaşamıyorum

okuttuğum dediğinizi gibi 1 adet olarak geçiyor

peş peşe okuturken iyi

fakat arada bir adet değiştiricek oluyorum orda sıkıntı aşıyorum

eta da bu iş oluyor

okutuyorum barkodu

adette duruyor

adeti değiştirirsem o adeti giriyor

değiştirmezde

yeni bir barkod okutursam
barkod kısmına geliyor

ve barkodu okutup tekrar adette duruyor
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Benim tarif ettiğim de tam olarak bu olay.
 
Katılım
20 Aralık 2006
Mesajlar
939
Excel Vers. ve Dili
türkçe
hocam saolun

aslında dediğiniz işimi görüyor ama
sıkıntı bende tam olarak istediğimi anlatamıyorum
 
Üst