안녕하세요..
질문이 있습니다.
프로그램의 폼 사이즈를 일반 모니터(1024*768)에 맞춰서 했는데 이 프로그램을 LCD 모니터(1280*1024)에서 실행했을경우에 폼크기와 컴포넌트 크기가 모니터 크기에 맞게 자동적으로 맞춰지는 그런 컴포넌트는 없나요?
1024*768로 맞춘 프로그램을 1280-*1024에 맞추려면 컴포넌트를 일일이 조정해야 하는 번거로움이 있네요... 몬가 방법이 없는가요?? 좀 알려주시면 감사하겠습니다.
그런 컴퍼넌트가 많이 있거든요
FormSize (토리 또는 여기 자료실)
Rx라이브러리 인가에도 해당 컴퍼넌트가 있고요
상기 컴퍼넌트는 폼 리사이즈 할때 컨트롤 사이즈 조정이니 목적에 맞지 않을수 도 있네요
일일히 맞추는 것도 그리 어렵지 않아요
Components property 이용해서 일괄적으로 처리하면 되는데 ^^
방법은 여러가지 있거든요
가장 쉬운것은 리사이즈를 할수 있는 픔클래스를 만들고
그것에서 상속받아 폼들을 만들면 되겠고요
또하나는 전역으로 쓰는 유닛에 함수를 포함하고 생성시 콜해도 되겠죠
Const
DefaultHPix = 1024;
DefaultVPix = 768;
.......
Function(FM : TFORM);
var i : integer;
H , V : integer;
begin
H := GetDeviceCaps(FM.CANVAS.HANDLE, HORZRES);
V := GetDeviceCaps(FM.CANVAS.HANDLE, VERTRES);
for i := 0 to FM.ComponentCount - 1 do
begin
if FM.Components[i] is TControl then
begin
TControl(FM.Components[i]).Top := Round( (V / DefaultVPix) * TControl(FM.Components[i].Top));
TControl(FM.Components[i]).Height := Round( (V / DefaultVPix) * TControl(FM.Components[i].Height));
TControl(FM.Components[i]).Left := Round( (V / DefaultVPix) * TControl(FM.Components[i].Left));
TControl(FM.Components[i]).Width := Round( (V / DefaultVPix) * TControl(FM.Components[i].Width));
end;
end;
end;
위Function은 테스트 안해보았지만 될것으로 추측합니다.
개념적으로 알것이니 알아서 바꾸어 쓰세요
그런데 님 여기서 3년전부터 계속 본것 같네요 ^^
FormSize (토리 또는 여기 자료실)
Rx라이브러리 인가에도 해당 컴퍼넌트가 있고요
상기 컴퍼넌트는 폼 리사이즈 할때 컨트롤 사이즈 조정이니 목적에 맞지 않을수 도 있네요
일일히 맞추는 것도 그리 어렵지 않아요
Components property 이용해서 일괄적으로 처리하면 되는데 ^^
방법은 여러가지 있거든요
가장 쉬운것은 리사이즈를 할수 있는 픔클래스를 만들고
그것에서 상속받아 폼들을 만들면 되겠고요
또하나는 전역으로 쓰는 유닛에 함수를 포함하고 생성시 콜해도 되겠죠
Const
DefaultHPix = 1024;
DefaultVPix = 768;
.......
Function(FM : TFORM);
var i : integer;
H , V : integer;
begin
H := GetDeviceCaps(FM.CANVAS.HANDLE, HORZRES);
V := GetDeviceCaps(FM.CANVAS.HANDLE, VERTRES);
for i := 0 to FM.ComponentCount - 1 do
begin
if FM.Components[i] is TControl then
begin
TControl(FM.Components[i]).Top := Round( (V / DefaultVPix) * TControl(FM.Components[i].Top));
TControl(FM.Components[i]).Height := Round( (V / DefaultVPix) * TControl(FM.Components[i].Height));
TControl(FM.Components[i]).Left := Round( (V / DefaultVPix) * TControl(FM.Components[i].Left));
TControl(FM.Components[i]).Width := Round( (V / DefaultVPix) * TControl(FM.Components[i].Width));
end;
end;
end;
위Function은 테스트 안해보았지만 될것으로 추측합니다.
개념적으로 알것이니 알아서 바꾸어 쓰세요
그런데 님 여기서 3년전부터 계속 본것 같네요 ^^