edit içeriğine göre davranma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
danaci
Üye
Mesajlar: 178
Kayıt: 24 May 2005 01:45

edit içeriğine göre davranma

Mesaj gönderen danaci »

arkadaşlar merhaba

30 adet char(1) boyutunda alanlarım var. Bunların içeğinin durumuna göre
eğer alanın içi boş ise mouse ile tıklayarak içine X koymak veya içeriğinde X varsa mouse ile tıklayarak bu içeriği kaldırmak istiyorum.
Bunu her edit için if ...then karmaşası ile değilde daha kısa yoldan yapabileceğim bir yol varmı?

iyi çalışmalar.
gimil
Üye
Mesajlar: 33
Kayıt: 28 Ara 2006 10:29
Konum: ank

Mesaj gönderen gimil »

var
i,Toplam:Integer;
begin
Toplam:=0;
for i := 1 to 59 do
begin
if TdbrichEdit(FindComponent('dbrichEdit'+inttostr(i))).Text<>'' then toplam:=toplam+strtoint(TdbrichEdit(FindComponent('dbrichEdit'+inttostr(i))).Text);
end;
table1.Edit;
dbrichedit61.Text:=inttostr(toplam);
table1.Post;
end;


bo kodla 59 adet edit in içleri dolu olanları topladım
burda işi yapan kod findcomponent kısmı alında
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

takvim gibi bir şey mi yapmaya çalışıyorsunuz?
Kullanıcı avatarı
sTb
Üye
Mesajlar: 59
Kayıt: 06 Nis 2005 11:13
Konum: Eskişehir

Mesaj gönderen sTb »

@danacı tam olarak ne yapmak istediğinizi bilmiyorum ama checkbox kullansanız daha rahat olmaz mı ????
" Her bildiğin doğru olsun. Ama her doğruyu her yerde söylemek doğru değildir. "
Kullanıcı avatarı
MoSoft
Üye
Mesajlar: 80
Kayıt: 10 Nis 2005 10:45
Konum: Askerden....
İletişim:

Mesaj gönderen MoSoft »

@gimil kanka kod için sağol ne zamandır arıyordum :D bu kodla bi kerede 1000 lerce editin içeriğini boşaltabiliyorum artık :D. Gerçi şimdi lazım değil ama ilerde eminim lazım olacaktır.

Kod: Tümünü seç

var
i:Integer;
begin
for i := 1 to 100 do
begin
if TEdit(FindComponent('Edit'+inttostr(i))).Text<>'' then
TEdit(FindComponent('Edit'+inttostr(i))).Text:='';
end;
end;
Şafak 300 ( 10.04.2005) dü artık Yok....

http://www.ucretsizyazilim.com
Kısaca Ben : http://www.google.com.tr/search?hl=tr&q ... 5%9F&meta=
Kullanıcı avatarı
MoSoft
Üye
Mesajlar: 80
Kayıt: 10 Nis 2005 10:45
Konum: Askerden....
İletişim:

Mesaj gönderen MoSoft »

şimdi gördüm aşağıda birisi aynısnı yazmış prd.
Şafak 300 ( 10.04.2005) dü artık Yok....

http://www.ucretsizyazilim.com
Kısaca Ben : http://www.google.com.tr/search?hl=tr&q ... 5%9F&meta=
danaci
Üye
Mesajlar: 178
Kayıt: 24 May 2005 01:45

Mesaj gönderen danaci »

arkadaşlar derdimi tam anlatamadım sanırım
Formda bu dediğim editlerin dışında da bir sürü edit var zaten.
Amaç formdaki bütün editlerin içerğini değiştirmek değil. toplam 30 kadar editin içindeki değere göre ;
eğer bu editin içeriği X ise mouse ile buna tıklayarak içini silmek veya
içi boş ise yine mouse ile tıklayarak içine X koymak istiyorum.

her edit için içeriğini test ederek if then kalabalığına girmeden bunu nasıl yapabilirim.
Kullanıcı avatarı
MoSoft
Üye
Mesajlar: 80
Kayıt: 10 Nis 2005 10:45
Konum: Askerden....
İletişim:

Mesaj gönderen MoSoft »

var
i:Integer;
begin
for i := 1 to 30 do
begin
if TEdit(FindComponent('Edit'+inttostr(i))).Text<>'' then
TEdit(FindComponent('Edit'+inttostr(i))).Text:='x' else
TEdit(FindComponent('Edit'+inttostr(i))).Text:='';
end;
end;

bu senin işini görür yanlız değişcek editleri 1 den 30 a kadar sıralaman lazım yada nameleri değiştirebilirsin editlerin mesela edita1 gibi edita2 yaparsan yukardaki kodda editleri edita yaparsan çalışır.
Şafak 300 ( 10.04.2005) dü artık Yok....

http://www.ucretsizyazilim.com
Kısaca Ben : http://www.google.com.tr/search?hl=tr&q ... 5%9F&meta=
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
önce istediğin işlemi bir edit için yap.
editin onclick inde textini kontrol edeceksin.
sonra diğer editlerin onclick olayına (object inspektorden) yazdığın procedure yi göster.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
danaci
Üye
Mesajlar: 178
Kayıt: 24 May 2005 01:45

Mesaj gönderen danaci »

arkadaşlar ilginiz için çok sağolun ama verilen kodlar tüm editler için aynı anda X koyuyor ya da içeriğini temizliyor. Benim amacım kullanıcı mouse ile seçtiği editin içeriğini birinci tıklama ile X yapsın eğer bir daha aynı edite tıklarsa içeriğindeki X temizlensin demiştim. Bunu her edit için if ile yapmak olası bir durum ancak kod kalabalığı olmadan kısaca nasıl yapabilirim.

iyi çalışmalar
gimil
Üye
Mesajlar: 33
Kayıt: 28 Ara 2006 10:29
Konum: ank

Mesaj gönderen gimil »

o zaman shift tuşuyla istediğin editlerin hepsini seçili duruma getir ve onclick olayında önce formdaki aktif editi buldur yani tıklanan editi. daha sonra içeriğini değiştirecek kodu yaz
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba...

- Önce bu işi Mouse Click olayı ile yapacağından önerim MouseUP eventinde kod yazman. Bir edit için bunu yapacak ve model edit'in bu kod yazdığın olacak.

Kod: Tümünü seç

procedure TForm1.Edit1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  If TEdit(Sender).Text = 'X' then TEdit(Sender).Text := ''
                              else TEdit(Sender).Text := 'X';
end;
- Sıradaki işlem ise @aslangeri'nin önerdiği gibi, diğer editleri bir bir dolaşıp ya da geriye kalanların tümünü seçip, MouseUp eventindeki açılır liste kutusundan bu model edit'in ( örneğimizde Edit1MouseUp ) MouseUp hazır yapılmışını seçmek.

- Başarılar... :wink:
Resim
Resim ....Resim
danaci
Üye
Mesajlar: 178
Kayıt: 24 May 2005 01:45

Mesaj gönderen danaci »

mrmarman arkadaş teşekkürler istediğim bu idi.
iyi çalışmalar
Cevapla