Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
7-38593
-Alex-
2002-12-10 19:40
2003.02.13
добавление полей в OpenDialog и SaveDialog


3-38137
Vad
2003-01-25 17:49
2003.02.13
IB DEFAULT CHARACTER SET


7-38612
maxim2
2002-12-12 21:20
2003.02.13
Перезагрузка компа, перез. системы и выключение компа как ?


14-38504
[NIKEL]
2003-01-25 22:52
2003.02.13
Народ, никто не писал прграмму для создания и декомиляции CHM


6-38426
alex_j1
2002-12-23 09:44
2003.02.13
компонент для работы с модемным соединением.. есть такой?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский