아래와 같이 코딩으로 Panel을 그리기는 했는데 반복적으로 해줘야 되거덩여
반복적으로하다보니 그린데 또 그리고 또그리고 하다보니 메모리가꽉차더군여
어떻게 그리고 나서 코딩으로 삭제하고 또 그리는 방법은 없나요?
삭제하는 방법이 필요합니다.
(물론 화면에서도 삭제하고 메모리에서도 삭제하구요,.)
답변 부탁드립니다.
for loop := 1 to b do
begin
ButtonArray[loop] := TPanel.Create(Self);
with ButtonArray[loop] do
begin
Parent := Self;
Caption := Query2.FieldByName('sam_id').AsString;
case Query2.FieldByName('tmp_state').AsInteger of
0 : begin
Color := clBlue;
Font.Color := clWhite;
end;
:
:
:
else begin
Color := clWhite;
Font.Color := clBlack;
end;
end;
Width := 500 div tmp_col;
Height := 20;
tmp_col1 := loop div 25;
tmp_mod1 := loop mod 25;
if tmp_mod1 <> 0 then
tmp_col1 := tmp_col1 + 1;
if tmp_mod1 = 0 then
tmp_mod1 := 25;
Top := (tmp_mod1*20) + 130;
Left := 10 + (Width * (tmp_col1-1)) + 2;
Tag := loop ; // OnClick에서 어떤 버튼인지 구분하기 위해 index저장
OnClick := ButtonClick; // OnClick 이벤트 지정
OnMouseMove := PanelMouseMove;
OnMouseDown := PanelMouseDown1;
end;
Query2.Next
end;
for a := 0 to Form1.ComponentCount - 1 do // Form안의 컴포넌트 숫자
if Form1.Components[a] is TPanel then // 만약 TPanel 이라면
if TPanel(Form1.Components[a]).tag > 0 then // Panel 중에서 제거 대상을 선별하는 루틴
Form1.Components[a].Free; // Panel 제거