grupboxda hesaplatma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
grupboxda hesaplatma
bir adet grupbox içerisinde 3 adet checkbox 3 adet label ve 3 adet editbox bulunuyor bunlar bırbırıyle eşli ve checkbox lardan bırını sectıgımızde label ve editbox aktif hale gelecekve editbox a deger girebilmeliyim.bu konuda bana yardımcı olursanız sevinirim.
checkboxların isimleri c1,c2,c3 ; labellar l1,l2,l3; editler de e1,e2,e3 olsun. Labellar ve editlerin enabled özelliğini false yap. Checkbozların cilick eventlarına da şöyle yaz;
c1.onClick için;
aynı şeyi c2 ve c3 ün onclicklerine yaz (l2,l3, ve e2,e3 için tabi!)
Tabi bu enabled formda o nesneleri gösterir ama aktif değldir . Eğer nesneler görünmesin diyorsan Enabled yerine Visible kullanmalısın.
c1.onClick için;
Kod: Tümünü seç
if c1.Checked then // işaretlenirse
begin
l1.Enabled := true;
e1.Enabled := true;
end
else begin
l1.Enabled := false;
e1.Enabled := false;
end;
Tabi bu enabled formda o nesneleri gösterir ama aktif değldir . Eğer nesneler görünmesin diyorsan Enabled yerine Visible kullanmalısın.
Arkadaşlar öncelikle sorularınızı özel mesaj ile değil forumda sormanız daha hayırlı çünkü böylece herkes faydalanır artı herkes cevap verebilir. Bu hatırlatmadan sonra sorunuz:
örneğin e1 için:
Sanırım yapmak istediğiniz 1. aşama önceki verdiğim cevap ile oluyor ama 2. birşey daha var o da 4. editte göstermek. Onu da her editin onChange eventına şöyle diyebilirsiniz:formuma cevap yazdıgınız ıcın tesekkkurler fakatıkı adet problemım olustu.bırıncısı ılk basta label aktıf pasıf olması gerekıyor ben checkboxa tıkladıgımda aktıf olmalı ve edite deger gırmelıyım.ikincisi ise bu uc tane editboxa gırdıgım sayısal degerlerı 4. editboxda gostermek ıstıyorum.bunu nasıl yapabılırm.teşekkurler,iyi çalışmalar.
örneğin e1 için:
Kod: Tümünü seç
e4.Text := e1.Text;
Alternatif ve biraz kısa (çünkü hepsinin onclick olayını aynı procedure yönlendiriyorsun) bir kod olarakda aşağıdakini kullanabilirsin.
Bütün checkbox'ların onclick olayına aşağıdaki procedure'ü ata ve checkbox'ların tag değerlerine ismindeki sayıyı ver. Mesela c1'in tag değerini '1' c2'nin tag değerini '2' yap.
Edit'lerin ve Label'lerin Enabled değerleri default olarak False olmalı.
Bütün checkbox'ların onclick olayına aşağıdaki procedure'ü ata ve checkbox'ların tag değerlerine ismindeki sayıyı ver. Mesela c1'in tag değerini '1' c2'nin tag değerini '2' yap.
Edit'lerin ve Label'lerin Enabled değerleri default olarak False olmalı.
Kod: Tümünü seç
procedure TForm1.c1Click(Sender: TObject);
var
n:Byte;
begin
n:=TCheckBox(sender).Tag; //CheckBox'ların Tag değerlerine geçerli rakamları yazmazsan kod hata verir
if TCheckBox(sender).Checked then
begin
TEdit(FindComponent('e'+IntToStr(n))).Enabled:=True;
TLabel(FindComponent('l'+IntToStr(n))).Enabled:=True;
end
else
begin
TEdit(FindComponent('e'+IntToStr(n))).Enabled:=False;
TLabel(FindComponent('l'+IntToStr(n))).Enabled:=False;
end;
end;
Cevap
Hocam Öncelikle Tüm CheckBoxların Onclick Olaylarını Aynı Proc'e yönlendir.
sonra..
ClickOlayına ;
L1.Enabled := C1.Checked;
E1.Enabled := L1.Enabled;
L2.Enabled := C2.Checked;
E2.Enabled := L2.Enabled;
L3.Enabled := C3.Checked;
E3.Enabled := L3.Enabled;
.
.
.
Yaz..
Bide FormCreate'de ;
C1.Checked := False;
C2.Checked := False;
C3.Checked := False;
dersen problem kalmaz;
iyi çalışmalar;
sonra..
ClickOlayına ;
L1.Enabled := C1.Checked;
E1.Enabled := L1.Enabled;
L2.Enabled := C2.Checked;
E2.Enabled := L2.Enabled;
L3.Enabled := C3.Checked;
E3.Enabled := L3.Enabled;
.
.
.
Yaz..
Bide FormCreate'de ;
C1.Checked := False;
C2.Checked := False;
C3.Checked := False;
dersen problem kalmaz;
iyi çalışmalar;