안녕하세요.
최용일님께서 작성하신 ctrlsize를 보고 작업을 하고 있읍니다.(감사.. 감사..)
저는 패널을 동적으로 생성(갯수는 정해져 있지 않음)시켜서 크기조절과 이동을 하고 있는데요. 근데. 한 패널에 포커스가 가 있을때 그 패널을 없애려고 하는데.. 그걸 모르겠어요.
선택한 패널을 FindComponent로 찾으면 못찾는데요.. 패널은 생성될때 임의로 제가 정해주고 있구요..
제가 FindComponent를 잘못 써서 그런거 같기도 하고요..
TempPanel := (form1.FindComponent(panelname) as TPanel);
TempPanel.free; --> TempPanel는 TPanel로 선언되어 있고요..
소스에는 FControl이 선택한 컴포넌트의 이름이 나오던데..
panelname := FControl.name로 컴포넌트의 이름이 저장되는데..
뭐가 문제죠?
동적으로 컴포넌트를 생성할 때 제가 임의로 컴포넌트 이름을 지정하는게 어디에 따로 등록이 되야 하나요??
제 생각엔 Findcomponent가 컴포넌트를 못찾는거 같기도 하고요..
이거 어떻게 해야하죠???
아시는 분은 꼭 좀 알려주세요.. 바쁘시더라도.. 감사합니다.
흠~ 그거 제가 만든거는 아니구요... Marco Cantu가 만든것을 약간 손본거뿐입니다...
제가 볼때는 이상이 없을거 같구요... 동적으로 생성하실때 이름을 정해주시지 않은거
같네요... 컴포넌트 이름을 정해주시지 않으면 FindComponent로 찾지 못하거든요...
var
Panel: TPanel;
begin
Panel := TPanel.Create(Self);
......
Panel.Name := 'MyPanel; // 아마두 이부분이 빠진거 같네요...
Panel.Parent := Self;
.....
end;
혹시 발생할지 모를 예외를 피하기 위해서 nil검사를 해주세요...
TempPanel := TPanel(Form1.FindComponent(PanelName));
if TempPanel <> nil then
TempPanel.Free;
^^ 항상 즐코하세요...
박수진 wrote:
> 안녕하세요.
> 최용일님께서 작성하신 ctrlsize를 보고 작업을 하고 있읍니다.(감사.. 감사..)
>
> 저는 패널을 동적으로 생성(갯수는 정해져 있지 않음)시켜서 크기조절과 이동을 하고 있는데요. 근데. 한 패널에 포커스가 가 있을때 그 패널을 없애려고 하는데.. 그걸 모르겠어요.
>
> 선택한 패널을 FindComponent로 찾으면 못찾는데요.. 패널은 생성될때 임의로 제가 정해주고 있구요..
> 제가 FindComponent를 잘못 써서 그런거 같기도 하고요..
>
> TempPanel := (form1.FindComponent(panelname) as TPanel);
> TempPanel.free; --> TempPanel는 TPanel로 선언되어 있고요..
>
> 소스에는 FControl이 선택한 컴포넌트의 이름이 나오던데..
> panelname := FControl.name로 컴포넌트의 이름이 저장되는데..
>
> 뭐가 문제죠?
>
> 동적으로 컴포넌트를 생성할 때 제가 임의로 컴포넌트 이름을 지정하는게 어디에 따로 등록이 되야 하나요??
>
> 제 생각엔 Findcomponent가 컴포넌트를 못찾는거 같기도 하고요..
>
> 이거 어떻게 해야하죠???
>
> 아시는 분은 꼭 좀 알려주세요.. 바쁘시더라도.. 감사합니다.