Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> И снова масшабирование 
:(
    Опции темы
Palladin
Дата 16.4.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



У предприятия была программа написанная еще под DOS, которая выполняла некие функции, мне сделали заказ чтобы я написал под Windows, а так же сделал некоторые нововведения и т.п. Что я и сделал, однако пользователи ну ОЧЕНЬ захотели чтобы программа запускалась на весь экран, и оформлена как DOS приложения(синий фон и т.п.), что и сделал и тут им не понравилось как выглядет окно, они хотят чтобы было как в досе, запускают они из тотала мою прогу и хотят чтобы она запускалась как игра чтоли=) т.е. на весь экран и только она, сделал максимизацию окна, ненравится, посидел поговорил с ними пришел к выводу что они хотят чтобы программа именно как игра работала, поиск по DRKB дал статью которая так и называется "Как развернуть форму на весь экран, как в играх", однако код у меня не отработал:(
Вот весь код из статьи:
Код

interface

uses
 Windows, Messages, SysUtils, Classes, Controls,
Forms,
 StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
 private
   { Private declarations }
procedure WMGetMinMaxInfo(var msg: TWMGetMinMaxInfo);
message WM_GETMINMAXINFO;

 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.WMGetMinMaxInfo(var msg:
TWMGetMinMaxInfo);
begin
 inherited;
 with msg.MinMaxInfo^.ptMaxTrackSize do begin
   X := GetDeviceCaps( Canvas.handle, HORZRES ) +
(Width - ClientWidth);
   Y := GetDeviceCaps( Canvas.handle, VERTRES ) +
(Height - ClientHeight );
 end;

end;

procedure TForm1.Button1Click(Sender: TObject);
const
Rect: TRect = (Left: 0; Top: 0; Right: 0; Bottom: 0);
FullScreen: Boolean = False;
// Разворачиваем на весь экран
begin
FullScreen := not FullScreen;
if FullScreen then begin
Rect := BoundsRect;
SetBounds( Left - ClientOrigin.X,
Top - ClientOrigin.Y, GetDeviceCaps( Canvas.handle,
HORZRES )
+ (Width - ClientWidth), GetDeviceCaps( Canvas.handle,
VERTRES )
+ (Height - ClientHeight ));
                  end
else BoundsRect := Rect;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
end.


Ошибки на строках 
Код

FullScreen := not FullScreen;

и 
Код

Rect := BoundsRect;


В чем может быть проблема?
P.S. приму с распростертыми объятиями любой код который выполняет аналогичные функции, заранее спс


Это сообщение отредактировал(а) Palladin - 16.4.2009, 15:58


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Crw
Дата 16.4.2009, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 25.2.2008

Репутация: 3
Всего: 4



smile
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
  BorderStyle:=bsNone;
  WindowState:=wsMaximized;
end;

PM MAIL   Вверх
Palladin
Дата 16.4.2009, 16:19 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Ну а теперь измени разрешение экрана с твоего ну скажем на 800х600
Плюс к этому твой код не то, если уж брать твой , то еще надо делать то что я написал выше, а так же Программно скрывать меню пуск, я же написал пользователь хочет чтобы как в досе, чтобы только он и программа=) и никаких часов в трее, никаких рамок...


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Crw
Дата 16.4.2009, 16:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 25.2.2008

Репутация: 3
Всего: 4



Цитата(Palladin @  16.4.2009,  16:19 Найти цитируемый пост)
а так же Программно скрывать меню пуск

Ты пробовал тот код который я написал?
PM MAIL   Вверх
Palladin
Дата 16.4.2009, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Да, сорри=) плюс тебе за это smile  Однако теперь необходимо прописать изменения размеров компонентов в зависимости от разрешения, у тебя в "загашнике", нет такого кода?


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Crw
Дата 16.4.2009, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 25.2.2008

Репутация: 3
Всего: 4



Кинул на форму в правый нижний угол кнопочку и в свойствах Anchors выставил [akRight,akBottom]. При ручном изменении разрешения экрана кнопочка так и оставалась всегда справа снизу, так что можно пользоваться якорями - с этим нет никаких проблем.
PM MAIL   Вверх
Palladin
Дата 16.4.2009, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Всетаки проблема есть, якоря выставлять уже пробовал, но вот попробуй кинь на форму с десятка два компонентов, выставь якоря, а потом возьми и начни уменьшать форму, или просто разрешения измени,  форму сделай на 1280х1024 а потом смени на 800х600, компоненты станут ну очень "красивыми".

Добавлено через 2 минуты и 40 секунд
Ладно, запарился за день уже туплю ###, буду закругляться, если есть готовый код resiz-а формы и авторесайз при этом компонентов и шрифтов, то выложи... в дркб полазил есть пару примеров, ток или я туплю или они мне не подходят


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Crw
Дата 16.4.2009, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 25.2.2008

Репутация: 3
Всего: 4



Просто уточнить:
Тебе при изменении размеров формы надо изменить позиции/размеры компонентов, или промасштабировать компоненты т.е. увеличиваем форму в 1.5 раза и надо чтобы компоненты также увеличивались и сунулись на такую же величину (как будто задается зум)?
PM MAIL   Вверх
pseud
Дата 16.4.2009, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



1. что за система-то (если не секрет)? для кого? биржа?
2. 
Цитата(Palladin @  16.4.2009,  15:49 Найти цитируемый пост)
пришел к выводу что они хотят чтобы программа именно как игра работала

игра, если я правильно понимаю, при запуске выставляет определенное нужное ей разрешение.
поэтому 
Цитата(Palladin @  16.4.2009,  16:19 Найти цитируемый пост)
Ну а теперь измени разрешение экрана с твоего ну скажем на 800х600

не актуально
3. когда-то я пытался писать прогу а-ля DOS для человека панически боящегося винды, ибо он всю жизнь проработал в ДОСе.
Неблагодарное это занятие. Лучше убедить человека, что Виндовс - это добро. Т.к. раз он работает в винде - ставит проги виндошные, работает в них, вливается так сказать. А твоя прога через пару месяцев окажется мартышкиным трудом.

Добавлено через 3 минуты и 3 секунды
4. У меня есть один проект - Инфокиоск. Вот тебе и а-ля ДОС. В ней мне хватает:
Код

BorderStyle = bsNone;
FormStyle = fsStayOnTop;
WindowState = wsMaximized;



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Palladin
Дата 17.4.2009, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



По задаче смысл таков: предприятию более 50 лет, раньше стоял дос+были написаны дос-программы(не одна, а много маленьких), потом перешли на более мощные машины, сейчас у предприятия дела идут хорошо(не сейчас а чуть раньше), заменили всю аппаратуру(ужас просто стоят коры+жефорсы 512х256 с поддержкйо 3 шейдеров, а на компьютерах запускают только дос приложения+офис smile ) НЕкоторое время назад решили переписать программы, т.к. они мягко говоря "устарели"+решили добавить некоторые функции, дали заказ на первую программу, начал углублятся в задачу и понял что куда комфортнее и правильнее не писать снова n узкоспециализированных задач, а написать одну так сказать "большую", вот её, то я и написал, программа работает, да вот только заморочка с масштабированием, сегодня со свежей головой обдумав, пришел к выводу, что особой разницы нет, запускать как игру или wsMaximized, даже как-то ближе второй вариант, однако теперь необходимо стелать ресайз всего, пользователи по большей части немолодые, привыкли к разрешению 800х600 в лучшем случае, под такое разрешение писать как-то не очень, т.к. рано или поздно на их место придут молодые специалисты и их это разрешение врядли устроит=)
поэтому винградовцы, не хочу изобретать велосипед(видимо потомучто проект окончен и как-то руки уже опустил smile ) выложите кто код, если брать метод с wsmaximized, то необходимо чтобы от текущего разрешения монитора, форма перестраивалась, и все что в ней так же, чтобы как проф приложения, изменяешь размер окна, а вместе с этим изменяются размеры компонентов\шрифтов и т.п.
Наверняка у кого-то в "загашнике" есть подобный код... надеюсь)

Добавлено через 4 минуты и 1 секунду
Чтобы форма на весь экран, и при этом компоненты(визуально) на все таких же местах


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
pseud
Дата 17.4.2009, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



Цитата(Palladin @  17.4.2009,  10:18 Найти цитируемый пост)
т.к. они мягко говоря "устарели"

этим все сказано. 

1. используй Anchors, но не везде они помогут.
2. AutoSize = False и прочее

как ты все это дебажить будешь? столько гемора...
я так понимаю никаких MDI и прочее...

Цитата(Palladin @  17.4.2009,  10:18 Найти цитируемый пост)
видимо потомучто проект окончен

если есть возможность таки просунуть проект без этих извращений с максимайзами - просовывай.
найди вменяемого человека среди заказчиков.
распечатай статьи про интерфейс доходчивые.


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1907 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.