Q&A

  • 코딩으로 panel그리기는 했는데 지우는방법?
아래와 같이 코딩으로 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;
1  COMMENTS
  • Profile
    남충희 2002.12.31 04:16
    테스트 하시고 사용하시길...

    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 제거