Maskedit ile ilgili bir şüphe
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Maskedit ile ilgili bir şüphe
Merhaba,
Formlarda Masedit kullanıyorum. Fakat şöyle bir tehlike gözlemledim:
____ (örneğin 4 basamaklı bir sayı tanımlamış olalım).
4567 (Normal giriş)
Fakat kullanıcı eğer isterse şu şekildede girşe izi veriyor:
_5__ Burada girilen 5 değeri Texte çevrilince ortaya garip bir durum çıkıyor. eğer _ iptal edilirse o zamanda durum söyle oluyor:
<space>5<space><space>
Buradaki verileri STRTOINT ile çevirip döngülerde kullandığımdan problem olabileceğini düşünüorum.
ilk basamağı girmeden ikinciye atlamama özelliği koyulabilirmi?
Teşekkürler.
Incal99
Formlarda Masedit kullanıyorum. Fakat şöyle bir tehlike gözlemledim:
____ (örneğin 4 basamaklı bir sayı tanımlamış olalım).
4567 (Normal giriş)
Fakat kullanıcı eğer isterse şu şekildede girşe izi veriyor:
_5__ Burada girilen 5 değeri Texte çevrilince ortaya garip bir durum çıkıyor. eğer _ iptal edilirse o zamanda durum söyle oluyor:
<space>5<space><space>
Buradaki verileri STRTOINT ile çevirip döngülerde kullandığımdan problem olabileceğini düşünüorum.
ilk basamağı girmeden ikinciye atlamama özelliği koyulabilirmi?
Teşekkürler.
Incal99
Her şey Delphi'den beklememek lazım. Öyle olsaydı da bu sefer tersi talep edilebilirdi.
- Aşağıdaki şekilde bir ekleme yaparsanız soruyu anladıysam sanırım istediğiniz yerine gelecektir.
// NOT Rakamlar için soldan sağa giriş zorunluluğu ve aradan silme olursa geri adım için tasarlanmıştır.
- Aşağıdaki şekilde bir ekleme yaparsanız soruyu anladıysam sanırım istediğiniz yerine gelecektir.
// NOT Rakamlar için soldan sağa giriş zorunluluğu ve aradan silme olursa geri adım için tasarlanmıştır.
Kod: Tümünü seç
procedure TForm1.MaskEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
Var
Konum : Integer;
Veri : String;
begin
If (Key = vk_Right ) AND (TMaskEdit(Sender).SelStart = Length(Trim(TMaskEdit(Sender).Text))) then Key := $0;
If (Key = vk_Delete) or (Key = vk_Back) then begin
Konum := TMaskEdit(Sender).SelStart;
Veri := TMaskEdit(Sender).Text;
Delete(Veri, Konum+1, 1);
TMaskEdit(Sender).Text := Veri;
TMaskEdit(Sender).SelStart := Konum;
Key := $0;
end;
En son mrmarman tarafından 07 Eyl 2007 04:04 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
kullandığın bileşenin keypress olayına space karakteri gelirse birşey yapma diye komut yaz.
gibi bir kod tabi eğer sorun buysa.
Not: Formun KeyPreview özelliğini true yapmalısın
Kod: Tümünü seç
if (Key =#32) then
begin
Key := #0;
end;
Not: Formun KeyPreview özelliğini true yapmalısın
Anlatırsanız unuturum,
Gösterirseniz hatırlarım,
Yaptırırsanız anlarım.
Gösterirseniz hatırlarım,
Yaptırırsanız anlarım.
Arkadaşlar çok teşekkürler,
Tek bir sorunum kaldı: Form4 üzerinde yallaşık 250 adet Maskedit nesnesi var bunlara tek tek sağ tuşu iptal eden kodu girmek çok problemli olacak. Acaba Editmask üzerinden veya Findcomponent() tarzında 250 sinede birden atayabileceğim bir seçenek yok mu?
Resmini göndermeye çalıştım ama sanırım forum resim kabul etmiyor:
Form1 şu şekilde:
1.Sütun (64 adet combobox)
2.sütun (64 adet Maskedit)
3.sütun (64 adet Maskedit)
4.sütun (64 adet combobox)
5.sütun (64 adet maskedit)
6.sütun (64 adet maskedit)
bu bir reçete ekranı. Aslında delphi bilgim daha derin olsaydı bu excel tarzı bir component ilede yapılabilirdi ama şu an böyle çözdüm. Tüm componentlerin içeriklerini bir text dosyasında saklıyorum.
Istenildiği zamanda PLC ye gönderiyorum.
Incal99
[/img]
Tek bir sorunum kaldı: Form4 üzerinde yallaşık 250 adet Maskedit nesnesi var bunlara tek tek sağ tuşu iptal eden kodu girmek çok problemli olacak. Acaba Editmask üzerinden veya Findcomponent() tarzında 250 sinede birden atayabileceğim bir seçenek yok mu?
Resmini göndermeye çalıştım ama sanırım forum resim kabul etmiyor:
Form1 şu şekilde:
1.Sütun (64 adet combobox)
2.sütun (64 adet Maskedit)
3.sütun (64 adet Maskedit)
4.sütun (64 adet combobox)
5.sütun (64 adet maskedit)
6.sütun (64 adet maskedit)
bu bir reçete ekranı. Aslında delphi bilgim daha derin olsaydı bu excel tarzı bir component ilede yapılabilirdi ama şu an böyle çözdüm. Tüm componentlerin içeriklerini bir text dosyasında saklıyorum.
Istenildiği zamanda PLC ye gönderiyorum.
Incal99
[/img]
- Zaten verdiğim koda dikkat edersen TMaskEdit(Sender) şeklinde ifade kullanmıştım... Yani joker bir kullanım alanı var.
- Bu sana ne kazandırıyor. Bu kodu ilk maskedit'in OnKeyDown olayına yazarsın. Sonra diğer MaskEditlerin her birinin events sayfasında OnKeyDown olayında açılır liste kutusunu açarsın ve listeden bu ilk MaskEdit'in OnKeyDown procedure'ü görünecektir onu seçeceksin. Böylece her maskedit için tek merkezden uygulama yapmış olursun.
- Bu sana ne kazandırıyor. Bu kodu ilk maskedit'in OnKeyDown olayına yazarsın. Sonra diğer MaskEditlerin her birinin events sayfasında OnKeyDown olayında açılır liste kutusunu açarsın ve listeden bu ilk MaskEdit'in OnKeyDown procedure'ü görünecektir onu seçeceksin. Böylece her maskedit için tek merkezden uygulama yapmış olursun.
Arkadaşlar çok teşekkürler,
Aşağıdaki kod ile 250 adedinide kontrol altına alabildim. Çok zaman tasarrufu oldu.
Hepinize iyi çalışmalar.
Incal99
[/code]
Aşağıdaki kod ile 250 adedinide kontrol altına alabildim. Çok zaman tasarrufu oldu.
Hepinize iyi çalışmalar.
Incal99
Kod: Tümünü seç
For m:=1 to 64 do begin
with TMaskEdit(FindComponent('MaskEdit' + IntToStr(m))) do EditMask:='!>999<;1; ';
with TMaskEdit(FindComponent('MaskEdit' + IntToStr(m))) do Text:='';
with TMaskEdit(FindComponent('MaskEdit' + IntToStr(m))) do OnKeyDown:=MaskEdit1KeyDown;
with TMaskEdit(FindComponent('MaskEdit' + IntToStr(m+64))) do EditMask:='!>999<;1; ';
with TMaskEdit(FindComponent('MaskEdit' + IntToStr(m+64))) do Text:='';
with TMaskEdit(FindComponent('MaskEdit' + IntToStr(m+64))) do OnKeyDown:=MaskEdit1KeyDown;
with TMaskEdit(FindComponent('MaskEdit' + IntToStr(m+128))) do EditMask:='!>9999<;1; ';
with TMaskEdit(FindComponent('MaskEdit' + IntToStr(m+128))) do Text:='';
with TMaskEdit(FindComponent('MaskEdit' + IntToStr(m+128))) do OnKeyDown:=MaskEdit1KeyDown;
with TMaskEdit(FindComponent('MaskEdit' + IntToStr(m+192))) do EditMask:='!>9999<;1; ';
with TMaskEdit(FindComponent('MaskEdit' + IntToStr(m+192))) do Text:='';
with TMaskEdit(FindComponent('MaskEdit' + IntToStr(m+192))) do OnKeyDown:=MaskEdit1KeyDown;
with TCombobox(FindComponent('Combobox' + IntToStr(m))) do Items.Clear;
with TCombobox(FindComponent('Combobox' + IntToStr(m))) do Text:='';
with TCombobox(FindComponent('Combobox' + IntToStr(m))) do DropDownCount:=40;