Chcę, aby po zaznaczeniu checkboxa przycisk się uaktywnił, czyli z przykladowo button.enabled:=true;
Ja se to wyobrażam tak:
application.ProcessMessages;
if h1_1.Checked=true then
ok1.Enabled:=true;
Proszę o pomoc, za każdą będę wdzięczny
Chcę, aby po zaznaczeniu checkboxa przycisk się uaktywnił, czyli z przykladowo button.enabled:=true;
Ja se to wyobrażam tak:
application.ProcessMessages;
if h1_1.Checked=true then
ok1.Enabled:=true;
Proszę o pomoc, za każdą będę wdzięczny
button1.setfocus;
jaśniej proszę
Ok, problem rozwiązany, trzeba było wykorzystać akcję kliknięcia checkboxa :)
a zamiast tego
if h1_1.Checked=true then
ok1.Enabled:=true;
zrób tak:
ok1.Enabled := h1_1.Checked;
Misiekd pomysł dobry, tylko ja podałem zbyt ogólny problem. W moim przypadku chodzi o to, że jak są zaznaczone dowolne 2 checkboxy z 12 to button ok1 jest aktywny, jeśli zaznaczymy już 3 to jest nieaktywny, i jeśli mamy zaznaczone 2 i jeden odznaczymy to, też jest nieaktywny. A wszystko to jest mi potrzebne, bo robię grę w tysiąca i mam moment oddawania kart z powrotem do musa. Mam już pewien pomysł, jak to zrobić, jak mi się uda to tu napiszę :)
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Radiobutton26.Checked:=
(length(Edit47.Text)>0)
and (length(Combobox8.Text)>0)
and (length(Edit49.Text)>0)
and (length(Edit50.Text)>0)
and (length(Combobox9.Text)>0)
and (length(Edit51.Text)>0)
and (length(Edit116.Text)>0)
and (length(Edit121.Text)>0)
and (length(Edit90.Text)>0);
if Radiobutton26.Checked=true then
Xibutton18.Enabled:=true else
Xibutton18.Enabled:=false;
Przerób to na swoje widzimisie, a na następny raz pisz w postach o co ci dokładnie chodzi.
Zrobiłem to, teraz już działa. A wygląda to tak: każdemu checkboxowi robimy procedurę kliknięcia, a w zmienny globalnych deklarujemy zmienną
licz_zazn:integer;
procedura kliknięcia każdego checkboxa wygląda tak (tutaj dla checkboxa H1_0):
procedure TForm1.H1_0Click(Sender: TObject);
begin
if h1_0.Checked=true then inc(licz_zazn) else dec(licz_zazn);//jesli zaznaczymy dany checkbox to zwiekszamy licz_zazn, licz_zazn daje nam liczbe zaznaczonych checkboxow
if licz_zazn=2 then ok1.Enabled:=true else ok1.enabled:=false;
end;
wowo napisał(a)
Zrobiłem to, teraz już działa. A wygląda to tak: każdemu checkboxowi robimy procedurę kliknięcia, a w zmienny globalnych deklarujemy zmienną
licz_zazn:integer;
procedura kliknięcia każdego checkboxa wygląda tak (tutaj dla checkboxa H1_0):
procedure TForm1.H1_0Click(Sender: TObject);
begin
if h1_0.Checked=true then inc(licz_zazn) else dec(licz_zazn);//jesli zaznaczymy dany checkbox to zwiekszamy licz_zazn, licz_zazn daje nam liczbe zaznaczonych checkboxow
if licz_zazn=2 then ok1.Enabled:=true else ok1.enabled:=false;
end;
To opłaca ci się robić odzielną procedurę dla kliknięcia na każdy chceckboź? Nie lepiej podpiąć jedną, uniwersalną procedurę dla kazdego checkboxa? I czy nie wiesz, że Checked jest samo w sobie typem logicznym, więc nie musisz sprawdzać, czy jest true (masło maślane, sprawdzasz warunek if true = true)?
procedure TForm1.CheckBoxClick(Sender: TObject);
begin
if (Sender as TCheckBox).Checked then inc(licz_zazn) else dec(licz_zazn);
if licz_zazn=2 then ok1.Enabled:=true else ok1.enabled:=false;
end;
faktycznie, z tym checked, powinno być bez true ;)
co do uniwersalnej procedury - i tak musiałbym ją chyba podpinać dla procedury kliknięcia każdego checkboxa, czyż nie? a pisanie procedury dla 2 linijek kodu chyba mija się z celem, chociaż nie wiem, jestem dopiero na pierwszym semestrze ;)