Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bildschirmauflösung steuern? (https://www.delphipraxis.net/17067-bildschirmaufloesung-steuern.html)

C64-Flo 27. Feb 2004 18:50


Bildschirmauflösung steuern?
 
Hallo!

Ich bin gerade über ein kleines problem gestolpert:

Mein Programm funktioniert & sieht gut aus....
...allerdings nur auf MEINEM Rechner....

Da ich die relativ exotische Auflösung 1280x960 benutze, hat das Programm ein Problem auf den meisten anderen Rechnern, die es bisher über sich ergehen lassen mussten.

Daher meine Frage:

Kann ich die Bildschirmauflösung aus dem Programm heraus steuern?

---> Anfangs auf 1280x960 stellen, und beim verlassen wieder rückgängig ?

:dp:

Luckie 27. Feb 2004 18:59

Re: Bildschirmauflösung steuern?
 
Kannst du. Aber so macher benutzer dürfte was adgegen haben, wenn er noch mit anderen Programmen nebenbei arbeitet. Besonders schön fndet er es bestimmt, wenn er da anch seine zwei Dutzend Icons neu sortieren darf. Udn wenn es der Monitor nicht mit macht könnte es auch teuer für dich werden.

Also pass dein Programm an und nicht umgekehrt. Wie man seine Programme für verschiedenen Bildschirmauflösungen optimiert hatten wir hier auch schon desöfteren Besprochen.

kiar 27. Feb 2004 19:03

Re: Bildschirmauflösung steuern?
 
pass einfach im create deiner form die größe an

raik

und zwar so
Delphi-Quellcode:
const
   screenwidthdev : = 1250;
   screenheigthdev: = 960;
var
   x,y:integer;
begin
scaled := true;
   x:= Screen.width;
   y:= Screen.Height;
   if(y <> ScreenHeightDev) or (x <> ScreenwidthDev) then
     begin
        frmMain.Height := (frmMain.ClientHeight* y div ScreenHeightDev) +
                                frmMain.Height- frmMain.ClientHeight;
        frmMain.Width := (frmMain.ClientWidth * x div ScreenWidthDev) +
                                frmMain.Height - frmMain.ClientHeight;
        scaleBy(x,Screenwidthdev);
     end;

ichhabefertig 27. Feb 2004 19:03

Re: Bildschirmauflösung steuern?
 
Wie Luckie schon sagte: Klar kann man die Auflösung per Delphi ändern, allerdings würde wohl kaum jemand ein Programm benutzen, das einfach die Auflösung umstellt. Ich übrigens auch nicht. Man sollte beim Erstellen von Programmen und auch Webseiten immer darauf achten, dass die Seite auf allen Bildschirmen dargestellt werden kann. Da es immer noch User mit 800x600 gibt, stellt dies wohl den kleinsten (sinnvollen) Nenner dar.

C64-Flo 27. Feb 2004 19:32

Re: Bildschirmauflösung steuern?
 
tjaaa...

Das Problem ist, dass das Programm eigentlich fertig ist, bis auf die Kleinigkeit, dass man gleich zu beginn einige wichtige Schaltflächen nicht bedienen kann, da sie ´ausserhalb´ des Monitors liegen, sofern man nicht die Auflösung 1280x960 Pixeln eingestellt hat. :cyclops:


Ich habe den Alternativvorschlag getestet, leider scheitert er an der Fehlermeldung, ´frmMain´ sei ein undeclared identifier....


Wie kann ich nun rabiaterweise doch noch die Auflösung steuern?

bzw mein Programm in allen auflösungen vernünftig laufen lassen?? :gruebel:

Luckie 27. Feb 2004 19:33

Re: Bildschirmauflösung steuern?
 
Schlechte Planung.

Zitat:

leider scheitert er an der Fehlermeldung, ´frmMain´ sei ein undeclared identifier....
Und wie kommt es zu dieser Fehlermeldung? Zeig mal Code. Wie machst du es denn? In der Unit der Form sollte frmMain bekannt sein.

C64-Flo 27. Feb 2004 19:36

Re: Bildschirmauflösung steuern?
 
Ich habe den Quelltextvorschlag von kiar (s.o.) in meine start-unit eingebaut....

beim compilieren bleibt es wie gesagt leider an frmMain hängen :(

C64-Flo 27. Feb 2004 19:37

Re: Bildschirmauflösung steuern?
 
vielleicht liegt es an meiner Delphi-version?

------>Delphi 7 Enterprise

kiar 27. Feb 2004 19:37

Re: Bildschirmauflösung steuern?
 
die frmmain ist die hauptform. die musst du schon an deine anpassen.
somit hatte luckie recht wenn er sagt, das er frmmain nicht kennt. die wird es bei dir nicht geben.

das kommt von copy und paste

raik

C64-Flo 27. Feb 2004 19:40

Re: Bildschirmauflösung steuern?
 
:lol:

achsooo....

C64-Flo 27. Feb 2004 19:48

Re: Bildschirmauflösung steuern?
 
Nun gut... jetzt wird mein Bildschirm schwarz beim Programmstart, nach mehrmaligem hektischen alt+strg+entf-gedrücke, ist mein PC neu hochgefahren :gruebel:


das ist mein Quellcode für die ´start´-unit (create):

Code:
procedure TForm4.FormCreate(Sender: TObject);
const
   screenwidthdev = 1280;
   ScreenHeightDev = 960;
var
  HTaskbar: HWND;
  x,y:integer;

begin
        {screenresolution}

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


    // Find handle of TASKBAR
    HTaskBar := FindWindow('Shell_TrayWnd', nil);

    // Disable the taskbar
    EnableWindow(HTaskBar, False);
    // Hide the taskbar
    ShowWindow(HTaskbar, SW_HIDE);
      BorderStyle := bsNone;

      Left       := 0;
      Top        := 0;
      Height     := Screen.Height;
      Width      := Screen.Width;
form4.color:=clblack;
end;
hmmm....

C64-Flo 27. Feb 2004 19:50

Re: Bildschirmauflösung steuern?
 
oh ich bin soooo blöd...


Danke jungs!!

es funzt jetzt!

kiar 27. Feb 2004 19:55

Re: Bildschirmauflösung steuern?
 
nochmal zum verständnis.

diese code mußt du in die formcreate einfügen von dem formular, welches du anpassen willst.dabei sollten die const im implemation teil deklariert werden. desweiteren solltest du im create bereich dann auch nicht mehr mir width und heigth spielen.

bei mir funktioniert der code einwandfrei.

raik

kiar 27. Feb 2004 19:56

Re: Bildschirmauflösung steuern?
 
woran lag es denn?

Luckie 27. Feb 2004 20:06

Re: Bildschirmauflösung steuern?
 
Ich hoffe den teil:
Delphi-Quellcode:
    // Find handle of TASKBAR
    HTaskBar := FindWindow('Shell_TrayWnd', nil);

    // Disable the taskbar
    EnableWindow(HTaskBar, False);
    // Hide the taskbar
    ShowWindow(HTaskbar, SW_HIDE);
      BorderStyle := bsNone;

      Left       := 0;
      Top        := 0;
      Height     := Screen.Height;
      Width      := Screen.Width;
Hast du wieder rausgenommen. Oder hast du einen Grund den Computer für den Benutzer nahezu unbedienbar zu machen?

MathiasSimmack 28. Feb 2004 08:30

Re: Bildschirmauflösung steuern?
 
Zitat:

Zitat von Luckie
Ich hoffe den teil: [...] Hast du wieder rausgenommen. Oder hast du einen Grund den Computer für den Benutzer nahezu unbedienbar zu machen?

Warum? Das Startmenü bekommt man entweder mit der [Win]-Taste oder [Strg]+[Esc] zu Gesicht, und mit [Alt]+[Tab] kann man nach wie vor zwischen den Anwendungen wechseln. Und notfalls schreiben wir uns ein Mini-Tool, das nichts weiter macht als solche Spielereien wieder aufzuheben. ;)

C64-Flo 28. Feb 2004 16:25

Re: Bildschirmauflösung steuern?
 
Ich hatte nur ein paar variablen falsch benannt, DARAN lags, Kiar.

(anstatt dein x,y hatte ich screenheigth/screenwidth genommen, weite runten aber nicht verändert...fertig)

:lol:


Nur ein bisserl mies ist:

Mein Programm umfasst ca.40 Forms/Units......

Muss ich da jetzt für JEDE einzelne Form diesen code in das formcreate packen??


:wiejetzt:

kiar 28. Feb 2004 16:29

Re: Bildschirmauflösung steuern?
 
mache in einer unit eine eigene procedure und rufe diese im create der jeweiligen form auf.

raik


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 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