Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.06.2013, 15:39
Krater Krater вне форума
Прохожий
 
Регистрация: 09.06.2013
Сообщения: 3
Версия Delphi: Delphi 2009
Репутация: 10
По умолчанию Масштабирование формы и компонентов + разрешение экрана

Всем привет!
Разработал программу у себя на компе(разрешение экрана 1366х768) в полноэкранном режиме(свойство формы WindowState=WSMaximized). В программе присутствуют панели, имейджи, лейбелы и т.д. Запустив готовый скомпилированный экзешник на нетбуке(разрешение экрана 1024x600) почти половина программы не поместилась(не отобразилась) на экране нетбука. Как написать универсальную программу, которая бы нормально(во весь экран) отображалсь при любом разрешении экрана. Прогуглив инет и испробовав готовые коды, должного рез-та не добился. К примеру использовал след.код:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Image1: TImage;
    Image2: TImage;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

const
  ScreenWidth: Integer = 1366;
  ScreenHeight: Integer = 768;
  
var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var x, y: LongInt;
begin
Form1.WindowState:=wsMaximized;
Image1.Align:=alClient;
Image1.Stretch:=True;
{Image1.Proportional:=True;}

Image2.Align:=alClient;
Image2.Stretch:=True;
{Image2.Proportional:=True;}
scaled := true;
  x := getSystemMetrics(SM_CXSCREEN);
  y := getSystemMetrics(SM_CYSCREEN);
  if (x <> ScreenHeight) or (y <> ScreenWidth) then
  begin
    Form1.height := Form1.height * x div ScreenWidth;
    Form1.width := Form1.width * y div ScreenHeight;
  end;

 if x <> ScreenWidth then
    scaleBy(x, ScreenWidth);  
end;

end.
Результат таков, что титульный Image(который расположен на форме отображается нормально при любом разрешении экрана), а компонент Panel и Image(который расположен на панели) по ширине отображается нормально, а высота отображается НЕ нормально, а именно меньше чем должна быть.
Код:
const
ScreenWidth: LongInt = 1366; 
ScreenHeight: LongInt = 768;
procedure TForm1.FormCreate(Sender: TObject);
var
iPercentage:integer;
begin
Form1.Scaled:=True;
Image1.Align:=alClient;
Image1.Stretch:=True;
Image2.Align:=alClient;
Image2.Stretch:=True;
if (screen.width <> ScreenWidth) then
begin
height := longint(height) * longint(screen.height) div ScreenHeight;
width := longint(width) * longint(screen.width) div ScreenWidth;
scaleBy(screen.width, ScreenWidth);
end;
end.
Этот код тоже не помогает, результат таков же как и выше описанный...
Пожалуйста, помогите с кодом или посоветуйте в каком направлении копать дальше. Заранее спасибо!
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:30.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025