[Delphi] checkBox

0

jedziemy dalej...
mam duuuuzzzzooo checkboxow, pomijam fakt ze sa tworzone w zaleznosci od potrzeb programu, ale teraz mam problem taki, ze
jezeli CheckBox1 jest zaznaczony to MaskEdit1.Enabled:=true;
jezeli CheckBox2 jest zaznaczony to MaskEdit2.Enabled:=true;
jezeli CheckBox3 jest zaznaczony to MaskEdit3.Enabled:=true;
itd...
i teraz powiedzcie mi gdzie mam wstawic procedurke ktora bedzie sprawdzala ktore checkboxy sa zaznaczone i wtedy odpalala MaskEdit'y? przeciez nie bede dla kazdego checkBoxa sprawdzal onclick, prosze ogol o pomoc (nie pierwszy raz i na pewno nie ostatni, jak ja sie wam chlopaki odplace...)
--Lardux

0

cos takiego?
if checkbox1.checked = true then maskedit1.enabled := true;

0

kolego, takie polecenie to ja znam, i traz mam to niby wpisac do kazdego, checkbox'a na onclick? jak mam ich 200? to sie dopiero nazywa sztuczne robienie kodu, a wiesz co to algorytmy i struktury danych? jak nie to radze poczytac, albo chociaz przeczytac pytanie, bo jak masz mi takie rady dawac, to juz wole posluchac mojej 14 letniej kuzynki, jej dowcipy sa chociaz smieszne (tylko mi sie tu nie obraz Od razu) --Lardux

0

Kiedy tworzysz CheckBoxy (zakladam, ze dynamicznie) daj kazdemu inny Tag (ponumeruj je) i taki sam tag daj odpowiadajacemu mu MaskEditowi.

Robisz procedure OnChange w tym stylu

for i:=0 to Pred(Form1.ControlCount) do *zamiast Form1 moze byc np GroupBox1 jesli sa na tym GroupBoxie
if (Form1.Controls[i] is TMaskEdit) and
(Form1.Controls[i].Tag = (Sender as TControl).Tag) then
begin
(Form1.Controls[i] as TControl).Enabled:=(Sender as TControl).Checked;
Break;
end;

i podpinasz ja pod wszystkie Checkboxy (przy ich tworzeniu). Jesli nie wiesz jak, to:
http:*www.4programmers.net/forum/index.php?action=show&id=25662

--
Pawel {Delphi 6 Personal}

Po pierwsze: naciśnij F1

0

Jeżeli i checkboxy i maskedity masz dynamiczne, to trzymaj je w tablicach. Niech każdy checkbox ma taga równego indexowi w tablicy. Dajesz wtedy ogólną procedurę OnClick i jedziesz:

MaskEdits to of koz tablica of TMaskEdit.

MaskEdits[(Sender as TCheckBox).Tag].Enabled:=(Sender as TCheckBox).Checked--Vogel [Delphi 6 PE]

Life is just a dream, you know...
[Cowboy Bebop]

0

To jeszcze ja dorzucę:

procedure TForm1.CheckBoxClick(Sender: TObject);
begin
TEdit(FindComponent('Edit'+IntToStr(TCheckBox(Sender).Tag))).Enabled := TCheckBox(Sender).Checked;
end;

Tak samo nadawać Tag o nazwie odpowiadającej Editowi i podciągnąć wszystko pod jedna procedurę.--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

0

Dryobates napisał:
TEdit(FindComponent('Edit'+IntToStr(TCheckBox(Sender).Tag))).Enabled := TCheckBox(Sender).Checked

FindComponent jest zbyt wolne - czas O(N) moja metoda daje O(1).--Vogel [Delphi 6 PE]

Life is just a dream, you know...
[Cowboy Bebop]

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