Po zaznaczeniu checkboxa uaktywnia się przycisk, jak zrobi

0

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

0

button1.setfocus;

0

jaśniej proszę

0

Ok, problem rozwiązany, trzeba było wykorzystać akcję kliknięcia checkboxa :)

0

a zamiast tego

if h1_1.Checked=true then
 ok1.Enabled:=true;

zrób tak:

ok1.Enabled := h1_1.Checked;
0

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ę :)

0

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.

0

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;
0
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;
0

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 ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1