Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Programm an Bildschirmauflösung anpassen (https://www.delphipraxis.net/153953-programm-bildschirmaufloesung-anpassen.html)

MiniMax 22. Aug 2010 14:06

Programm an Bildschirmauflösung anpassen
 
Moin Zusammen,
ich habe folgendes Problem: Ich programmiere meine Software auf einem Rechner mit 1440 x 900 pixel Auflösung. wenn ich das programm auf anderen Rechnern Starten möchte (mit einer anderen auflösung), wir alles verzerrt und schief angezteigt.
Nun habe ich es Bereits mit mehreren Codes probiert, die alle nicht den erwünschten erfolg brachten mal fehlte hier was und mal dort was (z.b. Buttons) oder manches wurde garnet erst skaliert (twebbrowser).
Ich hoffe dass ihr einen Code habt mit dem dies Automatisch passiert! Ich bitte um eure Hilfe

euer MiniMax

Hier mal alle drei Codes dienet funken

Delphi-Quellcode:
procedure TForm1.MaximizeAndScale;
var
  sWidth: Double;
  sHeight: Double;
begin
  sWidth := Screen.MonitorFromWindow(Handle).Width / Width;
  sHeight := Screen.MonitorFromWindow(Handle).Height / Height;
  if sWidth < sHeight then
  begin
    ScaleBy(Round(Screen.MonitorFromWindow(Handle).Width * 1.02), Width);
  end
  else
  begin
    ScaleBy(Round(Screen.MonitorFromWindow(Handle).Height * 1.02), Height);
  end;
  //WindowState := wsMaximized;
end;




procedure TForm1.scaleform;
const breite=1440; {Auflösung, unter der das Fenster erstellt wurde}
  hoehe=900;
var schrift: integer;
begin
  schrift := pixelsperinch-96;
  if screen.width>breite then begin
    if schrift>0 then
      {für große Schriften}
      ScaleBy(round(((screen.width/breite)*100)-((screen.width/breite-1)*100)),100)
    else
      {für kleine Schriften}
      ScaleBy(round(((screen.width/breite)*100)),100);
  end
else begin
    if screen.width=breite then
      ScaleBy(round(((screen.width/breite)*100)-schrift),100)
    else begin
      if schrift>0 then
        {für große Schriften}
        ScaleBy(round((100-(breite/screen.width-1)*100)-(breite/screen.width-1)*100),100)
      else
        {für kleine Schriften}
        ScaleBy(round((100-(breite/screen.width-1)*100)),100);
    end;
  end;
  WindowState := wsMaximized;
end;


procedure tform1.ScaleForme;
const
   screenwidthdev = 1440; // Einstellungen auf dem Entwicklungsrechner
   screenheightdev = 900; // dito
var
   x,y:integer;

begin
   //scaled := true;
   x:= Screen.width;
   y:= Screen.Height;
   if(y <> ScreenHeightDev) or (x <> ScreenwidthDev) then
     begin
        Form1.Height := (Form1.ClientHeight* y div ScreenHeightDev) +
                                Form1.Height- Form1.ClientHeight;
        Form1.Width := (Form1.ClientWidth * x div ScreenWidthDev) +
                                Form1.Height - Form1.ClientHeight;
        begin
        form1.ScaleBy(x,Screenwidthdev);
     end;
     end;
end;

omata 22. Aug 2010 14:28

AW: Programm an Bildschirmauflösung anpassen
 
Objectinspector: Alignment, Anchors?

MiniMax 22. Aug 2010 16:04

AW: Programm an Bildschirmauflösung anpassen
 
Hi ja aber geht das dann? Also mit jeder Auflösung? Und nicht beim Größer Ziehen?

SirThornberry 22. Aug 2010 16:13

AW: Programm an Bildschirmauflösung anpassen
 
Du schreibst das alles verzerrt und schief ist. Was erwartest du? Das ist jetzt nicht als kritik gedacht aber bevor man dir eine Lösung präsentieren kann musst du selbst auch wissen (und uns mitteilen) wie du es haben willst. Wenn man die Ausmaße von etwas verändert, ändert sich nunmal die Größe.

MiniMax 22. Aug 2010 16:36

AW: Programm an Bildschirmauflösung anpassen
 
Also ich habe mein Programm auf einen destop Pc mit 1440x900 geschreiben. Aber wenn ich es auf meinem Netbook starte ist alles viel zu groß da der auf 600x800 läuft! Wenn ich jetzt die geposteten Codes nehme, verschwinden die Buttons unter dem Webbrowser! Darum ist meine Frage ein bissel verwirrend :oops:

omata 22. Aug 2010 16:46

AW: Programm an Bildschirmauflösung anpassen
 
Mach doch mal einen Screenshot von deiner Form, dann können wir sehen was du da für Elemente hast.

SirThornberry 22. Aug 2010 17:02

AW: Programm an Bildschirmauflösung anpassen
 
Also ganz ehrlich, man sollte Programme nicht für verschiedene Auflösungen anpassen.
Denn wenn jemand eine höhre Auflösung hat möchte er diese auch gern nutzen um mehrere Programme nebeneinander platzieren zu können etc..
Und wer eine geringe Auflösung hat, hat in der Regel auch einen kleinen Bildschirm so dass, das Programm genau so groß ist (in Zentimetern auf dem Bildschirm).
Du solltest also lieber das Programm von vornherein für die kleinste Auflösung schreiben die du unterstützen willst. Und um unter größeren Auflösungen mehr Informationen bereit stellen zu können (zum Beispiel mehr sichtbare Einträge in einer Listbox) kann man die Anchors verwenden.

MiniMax 22. Aug 2010 17:09

AW: Programm an Bildschirmauflösung anpassen
 
Liste der Anhänge anzeigen (Anzahl: 1)
hier mal nen screenshot

omata 22. Aug 2010 18:17

AW: Programm an Bildschirmauflösung anpassen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal ein Beispiel...

MiniMax 23. Aug 2010 13:08

AW: Programm an Bildschirmauflösung anpassen
 
cool das funktioiert -- danke

p80286 23. Aug 2010 14:57

AW: Programm an Bildschirmauflösung anpassen
 
@omata

Bei mir hat sich festgesetzt, daß auch das Memo1 mit align:=alLeft versorgt sein muß, damit der Splitter funktioniert. War das mal so? oder hab ich da etwas falsch verstanden?

Gruß
K-H

omata 23. Aug 2010 16:22

AW: Programm an Bildschirmauflösung anpassen
 
Das Memo sitzt auf einem Panel und das Panel hat Align:=alLeft. Das Memo selbst sollte ja nicht den ganzen linken Bereich einnehmen, deshalb das Panel + Memo-Anchors.

Also du hast das schon richtig verstanden.

blubber443 28. Feb 2012 13:53

AW: Programm an Bildschirmauflösung anpassen
 
hi, ich kanns nicht öffnen kann mir jemand den code einfach geben?
hab auch das problem mit dem bildschirm

p80286 28. Feb 2012 14:28

AW: Programm an Bildschirmauflösung anpassen
 
Zitat:

Zitat von blubber443 (Beitrag 1153412)
hi, ich kanns nicht öffnen kann mir jemand den code einfach geben?
hab auch das problem mit dem bildschirm

Dabei hab ich gerade noch herein geschaut.
Seltsam...
object FMain: TFMain
Left = 206
Top = 113
Width = 800
Height = 600
Caption = 'FMain'
Color = clBtnFace
Constraints.MinHeight = 600
Constraints.MinWidth = 800
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Splitter1: TSplitter
Left = 233
Top = 0
Width = 8
Height = 532
Beveled = True
end
object Panel1: TPanel
Left = 0
Top = 0
Width = 233
Height = 532
Align = alLeft
BevelOuter = bvNone
TabOrder = 0
DesignSize = (
233
532)
object Memo1: TMemo
Left = 0
Top = 0
Width = 233
Height = 473
Anchors = [akLeft, akTop, akRight, akBottom]
Lines.Strings = (
'Memo1')
TabOrder = 0
end
end
object Panel2: TPanel
Left = 0
Top = 532
Width = 792
Height = 41
Align = alBottom
BevelOuter = bvNone
TabOrder = 1
DesignSize = (
792
41)
object Button1: TButton
Left = 710
Top = 9
Width = 75
Height = 25
Anchors = [akTop, akRight]
Caption = 'Button1'
TabOrder = 0
end
object Button2: TButton
Left = 624
Top = 9
Width = 75
Height = 25
Anchors = [akTop, akRight]
Caption = 'Button2'
TabOrder = 1
end
end
object WebBrowser1: TWebBrowser
Left = 241
Top = 0
Width = 551
Height = 532
Align = alClient
TabOrder = 2
ControlData = {...}
end
end


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz