Editbox sadece barkod okuyucudan değiştirilebilsin
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 86
- Kayıt: 27 May 2014 04:27
Editbox sadece barkod okuyucudan değiştirilebilsin
Arkadaşlar merhaba;
Formumda bir tane editbox var ve buraya barkod okuyucudan değer alıyorum.
Ancak bir taraftan da kullanıcı edit e elle müdahele edemesin istiyorum.
Edit in readonly özelliğini true yaparsam bu sefer barkod okuyucudan değer almıyor.
Enable özelliğini false yaparsam yine aynı sorun.
Çok araştırdım fakat işin içinden çıkamadım.
Nasıl yapabiliriz bu istediğimi?
Formumda bir tane editbox var ve buraya barkod okuyucudan değer alıyorum.
Ancak bir taraftan da kullanıcı edit e elle müdahele edemesin istiyorum.
Edit in readonly özelliğini true yaparsam bu sefer barkod okuyucudan değer almıyor.
Enable özelliğini false yaparsam yine aynı sorun.
Çok araştırdım fakat işin içinden çıkamadım.
Nasıl yapabiliriz bu istediğimi?
En son underwater tarafından 19 Nis 2016 01:41 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Re: Edit sadece barkod okuyucudan değiştirilebilsin
Kullanici müdahale etmesini istemiyorsan label kullan veya duruma gore edit ve labeli visible true false yaptir...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
-
- Üye
- Mesajlar: 86
- Kayıt: 27 May 2014 04:27
Re: Edit sadece barkod okuyucudan değiştirilebilsin
barkod okuyucudan gelen veri için nasıl olacak ta label kullanacağım???
Re: Edit sadece barkod okuyucudan değiştirilebilsin
Formun "KeyPreview" özelliğini True yapıp "OnKeyDown" olayına gerekli kodları yazabilirsin.
Ancak, bu da senin sorununun çözümü olmayacaktır. Zira klavyeden basılan tuşlar da barkod okuyucudan gelen karakter gibi algılanacak.
Barkod okuyucu cihaz ayarlarında bazı parametreler var. Bunlardan bazıları barkod başlangıç ve bitişi öncesi özel karakter veya tuş kombinasyonları göndermeye yarar. Cihaz ve programı belli bir tuş başlangıç bitiş ayarlarına göre hazırlarsan başlangıç gelmeden veya bitişten sonra basılan tuşları iptal edebilirsin diye düşünüyorum.
Ancak, bu da senin sorununun çözümü olmayacaktır. Zira klavyeden basılan tuşlar da barkod okuyucudan gelen karakter gibi algılanacak.
Barkod okuyucu cihaz ayarlarında bazı parametreler var. Bunlardan bazıları barkod başlangıç ve bitişi öncesi özel karakter veya tuş kombinasyonları göndermeye yarar. Cihaz ve programı belli bir tuş başlangıç bitiş ayarlarına göre hazırlarsan başlangıç gelmeden veya bitişten sonra basılan tuşları iptal edebilirsin diye düşünüyorum.
- fesiharslan
- Üye
- Mesajlar: 591
- Kayıt: 20 Eki 2006 11:37
- Konum: Erzurum
- İletişim:
Re: Edit sadece barkod okuyucudan değiştirilebilsin
Merhaba;
Cihaz olmadığı için test yaparak cevap verme imkanım yok. Fakat öneri sunabilirim.
Edit nesnesinin öznellerini değiştirmeye gerek yok. Yalnızca OnKeyPress olayına veya OnKeyDown olayına;
Yazmanız yeterli olacaktır. Çünkü barkod yazılma anına KeyPress ve KeyDown olayları gerçekleşmeyecektir. Dolayısıyla seçilen veri giriş alanına barkod verisi yazılacaktır. Kullanıcı bu alana tıklayabilecek, fakat herhangi bir tuşa bastığında; tuş değerini null yaptığımızdan, herhangi bir değişiklik yapamayacaktır.
Haklısnız, barkod verileri doğrudan veri giriş alanlarına yazılır. Bu nedenle, özel bir teknik (cihazdan gelen verileri doğrudan receive etme vb.) kullanmadığınız sürece, Label'a yazılamaz.underwater yazdı:barkod okuyucudan gelen veri için nasıl olacak ta label kullanacağım???
Cihaz olmadığı için test yaparak cevap verme imkanım yok. Fakat öneri sunabilirim.
Edit nesnesinin öznellerini değiştirmeye gerek yok. Yalnızca OnKeyPress olayına veya OnKeyDown olayına;
Kod: Tümünü seç
Key:=#0;
-
- Üye
- Mesajlar: 86
- Kayıt: 27 May 2014 04:27
Re: Edit sadece barkod okuyucudan değiştirilebilsin
öncelikle cevaplar için teşekkür ederim.
ancak editin onkeypress olayına
if Key<>#13 then Key:=#0;
yazdığımda barkod okuyucudan gelen karakterleride kabul etmedi.
OnKeyDown olayını denemedim.Yarın deneyeceğim.
ancak editin onkeypress olayına
if Key<>#13 then Key:=#0;
yazdığımda barkod okuyucudan gelen karakterleride kabul etmedi.
OnKeyDown olayını denemedim.Yarın deneyeceğim.
-
- Üye
- Mesajlar: 86
- Kayıt: 27 May 2014 04:27
Re: Edit sadece barkod okuyucudan değiştirilebilsin
formun KeyPreview özelliği tam olarak ne yapıyor? (hiç kullanmamıştım )
- fesiharslan
- Üye
- Mesajlar: 591
- Kayıt: 20 Eki 2006 11:37
- Konum: Erzurum
- İletişim:
Re: Edit sadece barkod okuyucudan değiştirilebilsin
Formun KeyPreview'ine gerek yok. Çünkü bu özellik Form üzerinde hangi nesne odağında olursanız olun, her tuş hareketini algılamasını ve yakalanmasını sağlar.underwater yazdı:formun KeyPreview özelliği tam olarak ne yapıyor? (hiç kullanmamıştım )
Buradaki asıl amaç barkodun bulunduğu veri alanındaki tuşu yakalamaktır.
Birde if Key<>#13 then kod kısmını kullanmanıza gerek yok.
Buradaki koşul Enter tuşuna basılınca manasında geliyor. Asıl amacımız herhangi bir tuşun basılmasını engellemek olduğundan;
yalnızca
Kod: Tümünü seç
Key:=#0;
Re: Edit sadece barkod okuyucudan değiştirilebilsin
Merhabalar,
Genelde barkod okuyucular Keyboard emulation veya Serial emulation olarak adlandırılan 2 farklı çalışma prensibi ile çalışırlar.
Keyboard emulation çalışma mantığında barkod okuyucu ile taranan barkod verisi klavye portuna atıldığından barkod verisi imlecin (kürsor) bulunduğu konuma aktarılır. Bu durumda barkod okuyucudan gelen veriye kullanıcının müdahale imkanı bulunmaktadır. Piyasada okuyucular genelde bu tarz çalışmaktadır.
Diğer çalışma mantığında (Serial emulation) ise barkod okuyucu ile taranan barkod verisi RS-232 bufferına aktarılmaktadır. (imlecin bulunduğu konuma aktarılmaz.) Bu yöntemde RS-232 portu dinlenilerek veriye erişilmesi gerekmektedir. Bu yöntemde barkod okuyucudan gelen veriye kullanıcının müdahale imkanı bulunmamaktadır. Bu yöntem güvenlik amaçlı tercih edilen bir yöntemdir.
Dolayısıyla önerim seri port emulasyonu ile çalışan bir barkod okuyucu talebinizi karşılar.
Genelde barkod okuyucular Keyboard emulation veya Serial emulation olarak adlandırılan 2 farklı çalışma prensibi ile çalışırlar.
Keyboard emulation çalışma mantığında barkod okuyucu ile taranan barkod verisi klavye portuna atıldığından barkod verisi imlecin (kürsor) bulunduğu konuma aktarılır. Bu durumda barkod okuyucudan gelen veriye kullanıcının müdahale imkanı bulunmaktadır. Piyasada okuyucular genelde bu tarz çalışmaktadır.
Diğer çalışma mantığında (Serial emulation) ise barkod okuyucu ile taranan barkod verisi RS-232 bufferına aktarılmaktadır. (imlecin bulunduğu konuma aktarılmaz.) Bu yöntemde RS-232 portu dinlenilerek veriye erişilmesi gerekmektedir. Bu yöntemde barkod okuyucudan gelen veriye kullanıcının müdahale imkanı bulunmamaktadır. Bu yöntem güvenlik amaçlı tercih edilen bir yöntemdir.
Dolayısıyla önerim seri port emulasyonu ile çalışan bir barkod okuyucu talebinizi karşılar.
-
- Üye
- Mesajlar: 86
- Kayıt: 27 May 2014 04:27
Re: Edit sadece barkod okuyucudan değiştirilebilsin
onkeydown olayına
Key:=#0;
yazdığımda incompatible type "word" and "char" hatası alıyorum.
#0 değerinin word tipindeki karşılığı nedir acaba?
Key:=#0;
yazdığımda incompatible type "word" and "char" hatası alıyorum.
#0 değerinin word tipindeki karşılığı nedir acaba?
-
- Üye
- Mesajlar: 86
- Kayıt: 27 May 2014 04:27
Re: Edit sadece barkod okuyucudan değiştirilebilsin
şöyle denedim ama yine olmadı (formun keypreview true)
onkeydown olayına
Key:=VK_BACK;
bu şekilde klavye ile edite herşeyi kabul etti.
Yazdıklarımı silmesi gerekmezmiydi. (VK_BACK)
onkeydown olayına
Key:=VK_BACK;
bu şekilde klavye ile edite herşeyi kabul etti.
Yazdıklarımı silmesi gerekmezmiydi. (VK_BACK)
- fesiharslan
- Üye
- Mesajlar: 591
- Kayıt: 20 Eki 2006 11:37
- Konum: Erzurum
- İletişim:
Re: Edit sadece barkod okuyucudan değiştirilebilsin
underwater yazdı:onkeydown olayına
Key:=#0;
yazdığımda incompatible type "word" and "char" hatası alıyorum.
#0 değerinin word tipindeki karşılığı nedir acaba?
Edit'in OnKeyDown olayınaunderwater yazdı:şöyle denedim ama yine olmadı (formun keypreview true)
onkeydown olayına
Key:=VK_BACK;
bu şekilde klavye ile edite herşeyi kabul etti.
Yazdıklarımı silmesi gerekmezmiydi. (VK_BACK)
Kod: Tümünü seç
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
begin
KeyChar := #0;
end;
-
- Üye
- Mesajlar: 86
- Kayıt: 27 May 2014 04:27
Re: Edit sadece barkod okuyucudan değiştirilebilsin
fesiharslan ilginiz için teşekkürler.
Ben Delphi 7 kullanıyorum ve bende prosedürün içeriği
TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
şeklinde görünüyor. Yani var KeyChar: Char; ibaresi yok.
elle eklemeyi denedim ama kabul etmedi.
Sanırım siz farklı bir delphi sürümü kullanıyorsunuz.
Ben Delphi 7 kullanıyorum ve bende prosedürün içeriği
TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
şeklinde görünüyor. Yani var KeyChar: Char; ibaresi yok.
elle eklemeyi denedim ama kabul etmedi.
Sanırım siz farklı bir delphi sürümü kullanıyorsunuz.
- fesiharslan
- Üye
- Mesajlar: 591
- Kayıt: 20 Eki 2006 11:37
- Konum: Erzurum
- İletişim:
Re: Edit sadece barkod okuyucudan değiştirilebilsin
Haklısınız, Delphi 10 Seattle sürümünü kullanıyorum.
Fakat sorun sürüm farklılığından kaynaklanmıyor.
Ben Multi-Device Application (FMX) projeleri için örnek vermiştim.
VCL için ise Edit'in OnKeyPress Olayına
yazabilirsiniz.
Fakat sorun sürüm farklılığından kaynaklanmıyor.
Ben Multi-Device Application (FMX) projeleri için örnek vermiştim.
VCL için ise Edit'in OnKeyPress Olayına
Kod: Tümünü seç
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
Key := #0;
end;
-
- Üye
- Mesajlar: 86
- Kayıt: 27 May 2014 04:27
Re: Edit sadece barkod okuyucudan değiştirilebilsin
işte sıkıntıda burada.fesiharslan yazdı:Haklısınız, Delphi 10 Seattle sürümünü kullanıyorum.
Fakat sorun sürüm farklılığından kaynaklanmıyor.
Ben Multi-Device Application (FMX) projeleri için örnek vermiştim.
VCL için ise Edit'in OnKeyPress Olayına
yazabilirsiniz.Kod: Tümünü seç
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin Key := #0; end;
Bu şekilde yaptığımda barkod okuyucudan gelen string ifadeyide kabul etmiyor.
Sanırım klavyeden basılmış gibi algılıyor.
Kullandığım Barkod okuyucu USB tip klavye emülasyonlu olanlardan.
Okuduğu barkod değerini ekrandaki aktif text alana atıyor direkt.