Форум: "Основная";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
ВнизРазмеры формы Найти похожие ветки
← →
Yury (2003-02-04 14:51) [0]Здравствуйте! Подскажите, плиз, как сделать ширину и высоту формы больше разрешения экрана и поместить ее по центру экрана, т.е. хочу форму размерами 1300*1000, а разрешение экрана 1024*768 и ее бы по центру. Спасибочки!
← →
Игорь Шевченко (2003-02-04 14:54) [1]Арифметику в школе проходил ?
← →
Романов Р.В. (2003-02-04 14:54) [2]Так же как и всегда
← →
Yury (2003-02-04 14:56) [3]2 Романов Р.В.
А вы пробовали так сделать?
← →
gsu (2003-02-04 14:58) [4]смотри
Screen.Width
Screen.Height
← →
Yury (2003-02-04 15:00) [5]2 gsu Ну и что там смотреть??? Я же не спрашиваю, как узнать разрешение экрана.
Вы попробуйте таким методом эту большую форму поместить по центру экрана...
← →
Yury (2003-02-04 15:02) [6]2 Игорь Шевченко Даже если я и знаю меньше вас, то по-моему не стоит считать себя самым умным
← →
gsu (2003-02-04 15:04) [7]Спроси у Романов Р.В., он всегда вежлив и любит написать ... и не ответить
← →
~Константин~ (2003-02-04 15:06) [8]А собственно зачем? Если для имитации полного экрана тады это не так делается... а вообще: top:=-100 left:=-200
← →
Yury (2003-02-04 15:24) [9]2 ~Константин~ Таким образом удается сдвинуть только верхнюю и левую часть формы, а нижняя и правая - все равно не выходит за пределы экрана. А как это сделать по-другому
А нужно для таго, что пишу видеоплеер и хочу сделать так, чтобы можно было в полноэкранном режиме типа "растянуть" экран, чтобы уменьшить черные полосы вверху и внизу...
← →
Романов Р.В. (2003-02-04 15:26) [10]
> Yury (04.02.03 14:56)
> 2 Романов Р.В.
> А вы пробовали так сделать?
Ну пробовал. А в чем проблема то?
← →
stone (2003-02-04 15:27) [11]
> А нужно для таго, что пишу видеоплеер и хочу сделать так,
> чтобы можно было в полноэкранном режиме типа "растянуть"
> экран, чтобы уменьшить черные полосы вверху и внизу...
А за одно и исказить изображение по вертикали...
← →
Романов Р.В. (2003-02-04 15:27) [12]BorderStyle = bsNone or bsDialog
← →
Игорь Шевченко (2003-02-04 15:28) [13]Yury (04.02.03 15:02)
> Даже если я и знаю меньше вас, то по-моему не стоит считать
> себя самым умным
Не в этом дело:
Левая верхняя координата.X = (разрешение_экрана_по_горизонтали - ширина_формы) / 2;
Левая верхняя координата.Y = (разрешение_экрана_по_вертикали - высота_формы) / 2;
Одна арифметика.
Или указать Position := posScreenCenter :-)
← →
Yury (2003-02-04 17:05) [14]2 stone А за одно и исказить изображение по вертикали...
Искажать никто не собирается, а увеличивать в N раз X & Y. В этом случае (Width/Height) постоянно.
2 Игорь Шевченко & Романов Р.В
Пишу:
Form1.Width:= 1500;
Form1.Height:= 1200;
Form1.Position:= poScreenCenter;
и вижу заголовок формы...
← →
Романов Р.В. (2003-02-04 17:43) [15]// Романов Р.В. © (04.02.03 15:27)
BorderStyle := bsNone;
Form1.Width:= 1500;
Form1.Height:= 1200;
// Игорь Шевченко © (04.02.03 15:28)
Левая верхняя координата.X = (разрешение_экрана_по_горизонтали - ширина_формы) / 2;
Левая верхняя координата.Y = (разрешение_экрана_по_вертикали - высота_формы) / 2;
← →
Игорь Шевченко (2003-02-04 18:13) [16]Романов Р.В. © (04.02.03 17:43)
> BorderStyle := bsNone;
Нафига ?
SetWindowPos после определения координат.
← →
Романов Р.В. (2003-02-04 20:25) [17]Без этого размер формы невозможно сделать больше размера экрана. Или у меня Windows глючит?
← →
Yury (2003-02-05 09:07) [18]2 Игорь Шевченко ©:
Пишу:
SetWindowPos(Form1.Handle, HWND_TOP, -100, -100, 2500, 2000,
SWP_SHOWWINDOW);
То же не помогло, мало того Form1.Width равен 1036, а Form1.Height = 780. Ну и как же ШКОЛЬНАЯ АРИФМЕТИКА??? :-\
← →
Романов Р.В. (2003-02-05 09:36) [19]Бордюр у формы убери
← →
Yury (2003-02-05 12:39) [20]2 Романов Р.В. ©
Спасибо! Без бордюра все хокей.
← →
Игорь Шевченко (2003-02-05 12:42) [21]
{
Модуль: FullScreenUnit
Описание: Поддержка разворота клиентской части окна во весь экран.
Источник: статья Пола Дилация в MSDN Magazine № 6(12) 2002 г.
Особенности использования: Окно, клиентская часть которого должна быть
развернута во весь экран, должно обрабатывать
сообщение WM_GETMINMAXINFO и устанавливать
свой максимальный размер больше, чем размер
экрана.
Авторы: Пол Дилация (С++, MFC), Игорь Шевченко (Delphi)
Дата создания: 09.01.2003
История изменений:
}
unit FullScreenUnit;
interface
uses
Windows, Controls;
type
TFullScreenHandler = class
private
FRestoreRect : TRect;
function GetInFullScreenMode : Boolean;
function GetMaxSize : SIZE;
public
{ Развернуть клиентскую область окна во весь экран }
procedure Maximize (AWinControl : TWinControl);
{ Восстановить клиентскую область окна }
procedure Restore (AWinControl : TWinControl);
{ Развернута ли клиентская область окна во весь экран }
property InFullScreenMode : Boolean read GetInFullScreenMode;
{ Максимально возможный размер окна, такой, чтобы клиентская область
уместилась во весь экран. }
property MaxSize : SIZE read GetMaxSize;
end;
var
FullScreenHandler : TFullScreenHandler;
implementation
uses
Forms; { Для Screen }
function TFullScreenHandler.GetInFullScreenMode : Boolean;
begin
Result := not IsRectEmpty(FRestoreRect);
end;
function TFullScreenHandler.GetMaxSize : SIZE;
var
ARect : TRect;
begin
{
При большом желании обращение к свойствам переменной Screen можно заменить
на вызовы функции GetSystemMetrics(SM_CXSCREEN) и
GetSystemMetrics(SM_CYSCREEN).
}
SetRect(ARect, 0, 0, Screen.Width, Screen.Height);
InflateRect(ARect, 10, 50); //Любые числа, лишь бы превышали размер
//неклиентской области окон
Result.cx := ARect.Right - ARect.Left;
Result.cy := ARect.Bottom - ARect.Top;
end;
procedure TFullScreenHandler.Maximize (AWinControl : TWinControl);
var
RcClient, RcNewWindow : TRect;
begin
RcClient := AWinControl.ClientRect;
{ Перевод координат клиентской области окна в экранные }
MapWindowPoints(AWinControl.Handle, HWND_DESKTOP, RcClient, 2);
{ Сохраним размеры окна для восстановления }
GetWindowRect(AWinControl.Handle, FRestoreRect);
{
При большом желании обращение к свойствам переменной Screen можно заменить
на вызовы функции GetSystemMetrics(SM_CXSCREEN) и
GetSystemMetrics(SM_CYSCREEN).
}
SetRect(RcNewWindow, 0, 0, Screen.Width, Screen.Height);
with RcNewWindow do begin
Inc(Left, FRestoreRect.Left - RcClient.Left);
Inc(Top, FRestoreRect.Top - RcClient.Top);
Inc(Right, FRestoreRect.Right - RcClient.Right);
Inc(Bottom, FRestoreRect.Bottom - RcClient.Bottom);
SetWindowPos (AWinControl.Handle, 0, Left, Top, Right - Left, Bottom - Top,
SWP_NOZORDER);
end;
end;
procedure TFullScreenHandler.Restore (AWinControl : TWinControl);
begin
with FRestoreRect do
SetWindowPos (AWinControl.Handle, 0, Left, Top, Right - Left, Bottom - Top,
SWP_NOZORDER);
SetRectEmpty(FRestoreRect);
end;
initialization
FullScreenHandler := TFullScreenHandler.Create();
finalization
FullScreenHandler.Free();
end.
type
TfMain = class(TForm)
.....
private
procedure WMGetMinMaxInfo(var Message : TWMGetMinMaxInfo);
message WM_GETMINMAXINFO;
...
end;
procedure TfMain.WMGetMinMaxInfo(var Message : TWMGetMinMaxInfo);
var
Sz : SIZE;
begin
Sz := FullScreenHandler.MaxSize;
with Message.MinMaxInfo^ do begin
ptMaxSize := TPoint(Sz);
ptMaxTrackSize := TPoint(Sz);
end;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.011 c