다음과 같이 버튼 하나를 올려놓고 클릭시 패널이 생성될때 넓이와 높이가 100, 100으로 생성이 됩니다.
그런데 문제는 여기 있습니다. 만약 버튼이 폼안의 오른쪽에 있다고 했을때
즉 폼의 사각의 size를 체크해서 그 안에 panel이 생기도록 하고 싶습니다.
다시한번 말씀드린다면 폼안의 오른쪽에 버튼이 있다면 그 버튼 클릭시 오른쪽으로 패널이 생기는게 아니라 왼쪽으로 패널이 생기게 하고 싶습니다.
고수님들의 조언 부탁드립니다.
procedure TForm1.Button2Click(Sender: TObject);
var
HintPanel : TPanel;
pt : TPoint;
begin
GetCursorPos(pt);
pt := ScreenToClient(pt);
HintPanel := TPanel.create(Self);
with HintPanel do
begin
Parent := Form1;
SetBounds(pt.X, pt.Y, 100, 100);
end;
end;
위 소스에서 버튼 위치가 아니러 커서 위치에서 생성되던데요.
하여간 폼 내부에 생성이라면 ...
procedure TForm1.Button1Click(Sender: TObject);
var
HintPanel : TPanel;
pt : TPoint;
SetX, SetY : integer;
begin
GetCursorPos(pt);
pt := ScreenToClient(pt);
SetX := 0;
SetY := 0;
if Form1.Width - pt.X < 100 then SetX := 100;
if Form1.Height - pt.Y < 127 then SetY := 100; //127은 폼의 타이틀부분높이를 27로 생갓 해ㅆ을때입니다.
HintPanel := TPanel.create(Self);
with HintPanel do
begin
Parent := Form1;
SetBounds(pt.X-SetX, pt.Y-SetY, 100, 100);
end;
end;