Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Programm zu gross... (https://www.delphipraxis.net/58600-programm-zu-gross.html)

Headi 9. Dez 2005 13:07


Programm zu gross...
 
Hallo leute

Leider leider habe ich schon wieder ein Problem,
und zwar habe ich mich schön dran gemacht und ein programm geschrieben.
Bin jetzt schon ziehmlich weit, aber heute als ich es auf einem anderen Pc mit
kleinerer Auflösung ausprobiert habe, war das programm einfach zu gross...

Bei meinem Computer passt das Programm schön, aber beim anderen Computer wurde einfach ein Teil abgeschnitten :cry:

Was kann ich da jetzt machen??
Ich möchte ja nicht die ganze form nochmals neu gestalten und so klein machen das es auch da schön rein passt.

Gibt es da vielleicht ein Code der das ganze Programm kleiner macht, je nach Auflösung?
Das dumme ist ja, ich arbeite mit einer auflösung von 1280*1024
der Pc bei dem ich das ausprobiert habe mit einer auflösung von 1024*768
wie sieht das denn bei einem pc mit der auflösung von 800*600 aus :cry:

Bin mir auch grad am überlegen, ob ich einfach eine scrollbar an der seite einbauen soll,
wäre halt einfach ne nicht so saubere sache...

So ich hoffe ihr kennt irgend eine Lösung für mein problem...

mfg headi

PierreB 9. Dez 2005 13:12

Re: Programm zu gross...
 
Lasse deine verwendeten visuellen Komponenten einfach selbst in der Größe anpassen, geht mit der Eigenschaft Anchor. Am Programmstart prüfst du dann die Auflösung und passt das Formular an, alternativ könntest du das Formular auch gleich so einrichten, dass das Programm beim Programmstart maximiert wird.

hm988 9. Dez 2005 13:15

Re: Programm zu gross...
 
hi,

also ich hatte auch mal so ein Problem, mit nem TChart (eher dem Formular)

habe dann alles nach dem resize des Formulars mitberechnet und neu positioniert,
also inklusive aller Buttons Labels usw.

es gibt dann aber noch eine Funktion die die Seite öfter aktualisiert, um das ganze flüssiger
zu machen. Sonst siehst alles ruckeln

mfg

ichbins 9. Dez 2005 13:48

Re: Programm zu gross...
 
Du kannst natürlich auch die Bildschirmauflösung ändern:

Delphi-Quellcode:
function ChangeResolution(XResolution, YResolution, Depth: DWORD): BOOL;
var
  DevMode: TDeviceMode;
  i: Integer;
begin
  Result := False;
  i     := 0;
  while EnumDisplaySettings(nil, i, DevMode) do
    with DevMode do
    begin
      if (dmPelsWidth = XResolution) and
        (dmPelsHeight = YResolution) and
        (dmBitsPerPel = Depth) then          //CDS_FULLSCREEN wenn Auflösung nur für 1 Prog geändert wird
        if ChangeDisplaySettings(DevMode, [CDS_UPDATEREGISTRY]) =
          DISP_CHANGE_SUCCESSFUL then
        begin
          Result := True;
          SendMessage(HWND_BROADCAST, WM_DISPLAYCHANGE, SPI_SETNONCLIENTMETRICS, 0);
          Break;
        end;
      Inc(i);
    end;
end;

PierreB 9. Dez 2005 13:51

Re: Programm zu gross...
 
Zitat:

Zitat von ichbins
Du kannst natürlich auch die Bildschirmauflösung ändern:

Ich glaube nicht das sich der Endanwender darüber freut wenn die komplette Systembildschirmauflösung geändert wird.

jim_raynor 9. Dez 2005 13:52

Re: Programm zu gross...
 
Zitat:

Zitat von ichbins
Du kannst natürlich auch die Bildschirmauflösung ändern:

Naja. Wenn der Monitor/Grafikkarte nicht die Auflösung unterstützt gibts ein Problem. Eventuell sollte man sich überlegen, ob es nicht einfach zu viele Informationen auf einem Formular sind und durch PageControls strukturiert werden sollten ...

Headi 9. Dez 2005 14:03

Re: Programm zu gross...
 
Zitat:

Zitat von jim_raynor
Zitat:

Zitat von ichbins
Du kannst natürlich auch die Bildschirmauflösung ändern:

Naja. Wenn der Monitor/Grafikkarte nicht die Auflösung unterstützt gibts ein Problem. Eventuell sollte man sich überlegen, ob es nicht einfach zu viele Informationen auf einem Formular sind und durch PageControls strukturiert werden sollten ...

Bildschirmauflösung ändern geht nicht is logisch :-D

Dann Page Controls habe ich leider schon... dort ist ja auch alles drinn.

@PierreB und Hm988 :

könntet ihr vielleicht ein bisschen genäuer erklären was ihr meint was passiert und wie man das macht?

vielen dank schon mal

mfg headi


hmmm...mir kommt jetzt grad noch ne idee... ich könnte ja das ganze nochmals aufteilen, so dass man einfach auf "weiter"
klicken müsste.
Aber wie macht man das? muss ich da die zwei seiten dann auf ein panel machen oder ein frame oder wie?

faux 9. Dez 2005 14:10

Re: Programm zu gross...
 
Zitat:

Zitat von PierreB
Zitat:

Zitat von ichbins
Du kannst natürlich auch die Bildschirmauflösung ändern:

Ich glaube nicht das sich der Endanwender darüber freut wenn die komplette Systembildschirmauflösung geändert wird.

Ganz deiner Meinung. Ich wäre ganz und gar darüber erfreut, wenn igrned ein Programm meine Auflösung ändern würde.. :roll:

Die Eigenschaft Delphi-Referenz durchsuchenAnchor veranlasst die Komponente, dass sie sich bei Größenänderung des Parents relativ dazu mitverändert.

Grüße
Faux

PierreB 9. Dez 2005 14:32

Re: Programm zu gross...
 
Zitat:

könntet ihr vielleicht ein bisschen genäuer erklären was ihr meint was passiert und wie man das macht?
Klick dein Hauptformular und mach im Objektinspektor folgende Einstellung:
Position := ScreenCenter;

Dann stellst du bei all deinen visuellen Komponenten die 4 Unterpunkte bei Anchors jeweils auf true.
Im FormCreate-Ereignis deines Hauptformulars schreibst du:
Delphi-Quellcode:
Form1.Width := Screen.Width;
Form1.Height := Screen.Height-35 //die -35 sind für die Taskleiste => abziehen
Das ganze hab ich jetzt nicht getestet, müsste aber so gehen.

Alternativ änderst du im Objektinspektor die Eigenschaft WindowsState auf wsMaximized.

faux 9. Dez 2005 14:50

Re: Programm zu gross...
 
Zitat:

Zitat von PierreB
//die -35 sind für die Taskleiste => abziehen

Oder du machst es auch für die, die die Taskleiste oben, auf der Seite oder sonst wo haben, bzw. diese höher haben:

Delphi-Quellcode:
Top := Screen.WorkAreaTop;
Left := Screen.WorkAreaLeft;
Width := Screen.WorkAreaWidth;
Height := Screen.WorkAreaHeight;
Die WorkArea* - Konstanten schließen nämlich die Taskleiste und an den Rand gedockte Fenster aus.

Grüße
Faux

Headi 9. Dez 2005 15:34

Re: Programm zu gross...
 
So vielen dank erstmals,
Ich habe jetzt die funktion Anchor mal angeschaut.
Das kann ich irgendwie nicht gebrauchen, da mein programm
nicht so gross ist, (allso vom umfang her und so) dass es Maximiert werden müsste.
Wenn ich die Anchor funktion allerdings aktiviere ohne maximierung, wird natürlich alles falsch dargestellt.

Ich denke ich versuche das jetzt mit dem "weiter" button und schaue mal wie gut das funktioniert.

Kann mir vielleicht jemand sagen wie ich das am besten realisiere?

Also ich habe ja eine PageControl, die würde ich jetzt in zwei teile aufteilen die über weiter erreicht werden.
Wo muss ich jetzt diese zwei Teile ablegen?
Auf einem Pannel und dann einfach mit visible:=true und visible:=false ein und ausblenden oder auf einem Frame?
Oder vielleicht sogar in einer Groupbox?
Das wäre glaub noch wichtig, dass ich die in der richtigen komponente ablege :gruebel:

naja nochmals vielen dank und ich hoffe ihr könnt mir da noch zu einer vernünftigen Lösung verhelfen.

EDIT:
vielleicht noch wichtig, ich möchte nich das ganze pagecontrol aufteilen, sondern nur eine seite davon :-D

mfg headi

alzaimar 9. Dez 2005 15:59

Re: Programm zu gross...
 
Es gab mal auf torry eine Komponente, die hat alle visuellen Komponenten skaliert (wohl auch Fontgröße etc). Schau mal rum. Ich weiss aber nicht, ob und wie gut die funktioniert.

SirThornberry 9. Dez 2005 16:45

Re: Programm zu gross...
 
du könntest noch folgendes versuchen:
Delphi-Quellcode:
ScaleBy(Screen.Width, 1280);
SetBounds(Left, Top, Width * Screen.Width div 1280, Height * Screen.Width div 1280);

kalmi01 9. Dez 2005 16:56

Re: Programm zu gross...
 
Moin, Moin,
Zitat:

Zitat von SirThornberry
du könntest noch folgendes versuchen:
Delphi-Quellcode:
ScaleBy(Screen.Width, 1280);
SetBounds(Left, Top, Width * Screen.Width div 1280, Height * Screen.Width div 1280);

Das sieht nach mehrfachen Skalieren des Dokumentes aber nicht mehr wirklich schön aus, deshalb hab ich mir mal eine Unit gebastelt, die alles sauber skaliert (Buttons/Labels/Grids/Bilder/usw.).
Iss aber leider nur mässig dokumentiert(genau genommen fast garnicht).
Gibt halt nur ne Demo und 10 Zeilen Erklärung dazu und iss deshalb nichts für so ein Portal wie die DP.

PS: tausche Source gegen Doku :)

alzaimar 9. Dez 2005 17:39

Re: Programm zu gross...
 
Zitat:

Zitat von kalmi01
... halt nur ne Demo und 10 Zeilen Erklärung dazu und iss deshalb nichts für so ein Portal wie die DP.

Ooch, ich bin nicht wählerisch :mrgreen:

Jelly 10. Dez 2005 09:15

Re: Programm zu gross...
 
:mrgreen: Sorry, dass ich lache...
Prinzipiell sollte man Formulare immer so gestalten, dass sie auch noch unter mindestens 800x600 laufen. Grössere Fenster sind meines Erachtens sonst eh überladen.
Zitat:

Zitat von Headi
hmmm...mir kommt jetzt grad noch ne idee... ich könnte ja das ganze nochmals aufteilen, so dass man einfach auf "weiter"
klicken müsste.

Da gabs mal eine Kompo TKWizard, die dies sehr elegant löst. Ist mittlerweilen auch in der JVCL integriert.

faux 10. Dez 2005 09:43

Re: Programm zu gross...
 
Zitat:

Zitat von Jelly
Da gabs mal eine Kompo TKWizard, die dies sehr elegant löst. Ist mittlerweilen auch in der JVCL integriert.

Ja, das ist mir auch eingefallen, jedoch wollte ich es nicht schreiben, da mich sonst wieder einer anspringt, dass amn sich für eine Komponente nicht die ganzen JEDIs installiert. :lol:

Grüße
Faux

Headi 10. Dez 2005 10:50

Re: Programm zu gross...
 
Zitat:

Zitat von Jelly
:mrgreen: Sorry, dass ich lache...
Prinzipiell sollte man Formulare immer so gestalten, dass sie auch noch unter mindestens 800x600 laufen. Grössere Fenster sind meines Erachtens sonst eh überladen.
Zitat:

Zitat von Headi
hmmm...mir kommt jetzt grad noch ne idee... ich könnte ja das ganze nochmals aufteilen, so dass man einfach auf "weiter"
klicken müsste.

Da gabs mal eine Kompo TKWizard, die dies sehr elegant löst. Ist mittlerweilen auch in der JVCL integriert.

gut vielen dank!!

werde mir die mal anschauen :thumb:

mfg headi

PierreB 10. Dez 2005 12:25

Re: Programm zu gross...
 
Zitat:

Prinzipiell sollte man Formulare immer so gestalten, dass sie auch noch unter mindestens 800x600 laufen. Grössere Fenster sind meines Erachtens sonst eh überladen.
Warum ? Eine Auflösung von 800x600 Pixeln setzt sicherlich nur noch ein sehr geringer Prozentsatz aller PC-User ein. Ich hatte bei mir auch mal das Problem mit der Auflösung, habe mich dann entschieden es auf 1024x768 einzurichten, alle anderen die unter einer kleineren Auflösung arbeiten müssen halt mit Darstellungsfehlern rechnen (man kann es eh nie allen recht machen).

Headi 10. Dez 2005 12:58

Re: Programm zu gross...
 
hmmm.. komme irgendwie nicht mehr weiter.
Muss ich jetzt die Jedis oder die Jvcl installieren??
Habs einfach mal mit dem JVCL versucht, aber wenn ich da auf die install.bat klicke
kommt ganz kurz ein schwarzes Fenster welches dann auch sogleich wieder verschwindet :cry:
mehr passiert nicht.

Kann mir vielleicht jemand genau erklären wie ich zu der TKWizard Kompo komme?

Ich habe delphi 2005 Architect

vielen dank

mfg headi

ManuMF 10. Dez 2005 13:07

Re: Programm zu gross...
 
:arrow: JVCL = Jedi-VCL. Erst JCL, dann JVCL installieren. Hier im Forum suchenJedi installieren findet hier im Forum sehr viel.

Gruß,
ManuMF

hm988 10. Dez 2005 15:05

Re: Programm zu gross...
 
hi,

also falls du es noch gebrauchen kannst, --> ich würde die Auflösung überprüfen und dannach
deine größe des Hauptformulars bestimmen. (die muss ja nicht gleich maximiert werden)

Ist die Auflösung zu klein setzt du die Formulargröße entsprechend.

Und im Resize Event deines Hauptformulars positionierst, und änderst die größe aller
visuellen Komponenten neu.

Delphi-Quellcode:
procedure TForm1.FormResize(Sender: TObject);
begin
    Button1.Top := Form1.Height-90;
    Button1.Left := Form1.Width-100;

    if Form1.Height < 200 then Button1.Height := 20
    else Button1.Height := 25;

    if Form1.Width < 300 then Button1.Width := 50
    else Button1.Width := 75;

end;
:-D Ja zugegeben ist eher bisl quatsch, und zu aufwändig :wall:

aber vielleicht hilfts dir ja

Jelly 10. Dez 2005 15:19

Re: Programm zu gross...
 
Zitat:

Zitat von PierreB
Ich hatte bei mir auch mal das Problem mit der Auflösung, habe mich dann entschieden es auf 1024x768 einzurichten, alle anderen die unter einer kleineren Auflösung arbeiten müssen halt mit Darstellungsfehlern rechnen (man kann es eh nie allen recht machen).

Ist ja auch ok. Es muss halt nur im Vorfeld klar sein. Auf der Arbeit hab ich ganz klar auch die Richtlinie gegeben, dass mit 1024x768 gearbeitet wird. Dann passt das auch. Wenn du aber Shareware oder sonstwie Massenware verkaufst, sollte man meines Erachtens aber nicht vorschreiben, dass diese Mindestauflösung gegeben sein muss. Du glaubst gar nicht, wieviele Rechner ich schon gesehen habe, wo immer nnur 800x600 läuft. Ich finde, das sollte man brücksichtigen.

Headi 11. Dez 2005 18:56

Re: Programm zu gross...
 
Zitat:

Zitat von hm988
hi,

also falls du es noch gebrauchen kannst, --> ich würde die Auflösung überprüfen und dannach
deine größe des Hauptformulars bestimmen. (die muss ja nicht gleich maximiert werden)

Ist die Auflösung zu klein setzt du die Formulargröße entsprechend.

Und im Resize Event deines Hauptformulars positionierst, und änderst die größe aller
visuellen Komponenten neu.

Delphi-Quellcode:
procedure TForm1.FormResize(Sender: TObject);
begin
    Button1.Top := Form1.Height-90;
    Button1.Left := Form1.Width-100;

    if Form1.Height < 200 then Button1.Height := 20
    else Button1.Height := 25;

    if Form1.Width < 300 then Button1.Width := 50
    else Button1.Width := 75;

end;
:-D Ja zugegeben ist eher bisl quatsch, und zu aufwändig :wall:

aber vielleicht hilfts dir ja

Hi naja

ist vielleicht ne gute Lösung für ein kleines Projekt,
aber bei einem grösseren das alles für jedes kompo einzell eingeben...

Kommt allso bei mir nicht in frage schade

aber dennoch danke

mfg headi

alzaimar 11. Dez 2005 19:22

Re: Programm zu gross...
 
Zitat:

Zitat von Jelly
:mrgreen: Sorry, dass ich lache...
Prinzipiell sollte man Formulare immer so gestalten, dass sie auch noch unter mindestens 800x600 laufen. Grössere Fenster sind meines Erachtens sonst eh überladen.

Sorry, dass ich jetzt lache...
Für professionelle Anwender (Broker, Musiker, industrielle Überwachung) kann die Information auf einem Screen und damit die Auflösung gar nicht gross genug sein. Was meinst Du wozu es Anwendungen mit Multiscreens gibt?

"Prinzipiell" sollte man nur eins: Den konkreten Anwendungsfall individuell analysieren und im Einzelfall entscheiden, welches 'Dogma' und welche Grundregel man denn nun ignorieren muss.

Jelly 11. Dez 2005 22:11

Re: Programm zu gross...
 
Zitat:

Zitat von alzaimar
"Prinzipiell" sollte man nur eins: Den konkreten Anwendungsfall individuell analysieren und im Einzelfall entscheiden, welches 'Dogma' und welche Grundregel man denn nun ignorieren muss.

Das hab ich ja mit diesem Beitrag wieder relativiert.
Entweder es ist einem klar, dass der Zielrechner eine gewisse Auslösung besitzen muss, oder das Programm soll für jedermann laufen. Hängt halt einfach vom Anwendungsfall ab, wie Du sagst.

TKC 12. Dez 2005 02:44

Re: Programm zu gross...
 
Hi, ich hatte so ein ähnliches Problem mal mit nem 16/9 Screen ...

Abhilfe bei mir schaffte folgendes:

Formular -> Autoscroll = False
Formular -> Scaled = True

das hat bei mir geholfen :wink:

kalmi01 12. Dez 2005 06:32

Re: Programm zu gross...
 
Moin, moin, Jelly,

Zitat:

Entweder es ist einem klar, dass der Zielrechner eine gewisse Auslösung besitzen muss, oder das Programm soll für jedermann laufen.
Das würd ich nicht unterschreiben.
Ich hab hier eine Anwendung, die "mal so nebenbei" läuft, das Fenster ist nicht überladen und bei einer 1600x1200 Auflösung schon fast popelig klein.
Bei 800x600 erschlägt einen das Fenster fasst. Die Schrift wirkt fast schon bombastisch.
Da find ich es schon besser, wenn sich die Software so einigermassen der Bildschirmauflösung anpasst.
Siehe als negativ-Beispiel: SAP, da kann man ab einer bestimmten Auflösung (fast) nichts mehr erkennen, weil 1024x768 als Zielauflösung angenommen wurde.
Ist zumindest bei uns so.
Dumm für den 20"-TFT-Dual-Screen-Besitzer :dancer: der kann kaum noch was erkennen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:10 Uhr.

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