|
초짜 님이 쓰신 글 :
: : 아래는 델파이코드다. 알아서 씨빌더로 바꿔써라..ㅋㅋㅋ
: : 빌더 안한지 거의 2년 되가기땜에 다 까묵었다.ㅠㅠ
: :
: : procedure TForm1.Button1Click(Sender: TObject);
: : var i : integer;
: : begin
: : listbox1.Clear;
: : for i:=0 to ComponentCount - 1 do
: : if Components[i] is TCheckBox then
: : if TCheckBox(Components[i]).checked then
: : listbox1.Items.Add(TCheckBox(Components[i]).caption);
: : end;
:
: 우선 헝아 이름은 글에서 빼고..
:
: 그리고 체크박스가 그것만 있는게 아니거든..
:
: 사방에 깔려 있고..
:
: 내가 알고자 하는 것은 어떤 특정 패널위 그룹박스 위에 있는 체크박스의 값이란다.
:
: ^^a 하여튼 니까짓꺼의 답변도 받아보고 내가 공부를 안하기는 징하게 안했나보구나. ㅎㅎ
어라? 아까 방법이 맘에 안들면. 다른 방법이 있쥐
특정 패널에 올라가는 체크박스 이름을 규칙적으로 짓고
(CB_Panel_1, 'CB_Panel_2, 'CB_Panel_3 이런식으로..)
아래처럼 쓰면 되지.
procedure TForm1.Button1Click(Sender: TObject);
var com_tmp : TComponent;
i, j : integer;
begin
for j := 1 to 3 do begin
i := Compno('CB_Panel_', j);
if i <> -1 then begin
com_tmp := Components[i];
if (com_tmp as TCheckBox).Checked then
listbox1.Items.Add((com_tmp as TCheckBox).Caption);
end;
end;
end;
// 새로 정의하는 함수
function TForm1.Compno(comp : string; no : integer) : integer;
var i, op : integer;
tt : tcomponent;
comp1 : TComponent;
begin
comp1 := findcomponent(comp+inttostr(no));
op:=-1;
for i:=0 to componentcount-1 do begin
Tt := Components[I];
if tt=comp1 then begin op:=i; break; end;
end;
result:=op;
end;
|