Announcement

Collapse
No announcement yet.

Falsches Erscheinungsbild bei anderer Konfiguration

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Falsches Erscheinungsbild bei anderer Konfiguration

    Hallo zusammen,</p>
    ich habe ein Problem, mit dem ich nicht allein dastehe und bis jetzt konnte noch niemand effektiv helfen. Meine Programme laufen einwandfrei auf manchen Computern und sehen absolut verschoben aus auf anderen. Sie laufen noch ohne Probleme, aber die Darstellung ist verquer. Komponenten sind zu klein oder ihre Position ist verschoben. Das hat NICHTS mit irgendwelchen Scale-Eigenschaften oder sowas zu tun. Probleme gibt es grundsaetzlich unter Windows NT und unter Windows 95/98 manchmal aus ungeklaerten Gruenden. Wenn jemand wirklich Rat weiss oder dieses Problem auch hat, dann waere ich sehr dankbar.</br>
    Claus

  • #2
    Mahlzeit, Claus P
    Da schein ich also nicht der einzige mit diesem Problem zu sein. Meine Prograemmchen entwickle ich mit einem Win95 Rechner. Sobald ich sie aber auf NT-Systemen laufen lasse, erscheint alles (vorwiegend LABELs und BUTTONs) verschoben und auch wesentlich groesser. Wenn eine der genannten Komponenten irgendwo in Naehe des Fensterrahmen ist, verschwinden sie auch schon manchmal - liegen also ausserhalb des sichtbaren Interface-Bereiches in NT, und das kann einem doch ziemlich den Spass verderben. Diverse "Scale"- und "PixelsPerInch" -Manipulationen konnten auch keine Abhilfe schaffen.
    Ich habe keine Ahnung was die Ursache dieses Problems betrifft bzw was man dagegen unternehmen koennte. Von daher:
    WILLKOMMEN IM CLUB DER VERLIERER - Schweisser

    Blauen Himmel und Sonnenschein

    Hartmu

    Comment


    • #3
      Hallo,

      diese Problem können nur dann auftreten, wenn man die von Microsoft im Platform-SDK gegebenen Ratschläge nicht beherzigt ;-)

      Generell ist es keine gute Idee, die eigenen Controls ohne "Spielraum" im Formular zu plazieren sowie die Ausrichtung nur über die Eigenschaften Width/Left/Top vorzunehmen. Delphi bietet über die <b>AutoSize</b>-Eigenschaft einen Weg an, wie sich sichtbare Controls an ihre Umgebungsbedinungen anpassen können. Wenn man jetzt nur noch dafür sorgt, das die zusammenhängenden Controls gemeinsam auf einer TPanel-Instanz untergebraucht wird, kann man Controls so visuell gruppieren, das sie später auch bei einer Anpassung an die jeweilige Darstellung ihre relative Position behalten. Dies gilt umso mehr, wenn auch die anderen Controls auf ihren TPanel-Instanzen plaziert werden (jedes Panel kann einzeln konfiguriert werden).

      Ab Delphi 5 steht dazu zusätzlich die <b>Anchors</b>-Eigenschaft (die Eigenschaft Anchors legt fest, wie das Steuerelement in seinem übergeordneten Objekt verankert wird.) zur Verfügung.

      Es liegt also weder an Windows noch an Delphi, wenn die eigene Programmoberfläche besch.... aussieht ;-)

      P.S: Nicht ohne Grund liefert Borland im Unterverzeichnis <b>Demos</b> Beispielprojekte aus, wo derartige Dinge demonstriert werden

      Comment


      • #4
        Tach Andreas,

        ich freu mich wirklich sehr ueber die <b>gutgemeinten</b> Ratschlaege. Ich habe mir einige Demos reingezogen, auf meinem Win95 Rechner compiliert und dann auf einem NT System (ohne Delphi und BDE) getest. Und was habe ich sehen muessen?! Sachen wie <b>thrddemo</b> sehen genau so verkorkst aus wie mein eingener Kram. Wirklich eindrucksvolle DEMOs also. Ausserdem, wozu gibt es die ganzen Eigenschaften im Bezug auf Objektposition wenn ich sie nicht benutzen soll?!

        Nun zur DELPHI Version:

        Ich spiele ueberwiegend mit D4-Standard, hinundwieder aber auch mit Visual Basic 6Pro, mit dem ich genau das gleiche Problem habe. Ist ja aber auch egal. In D4 habe ich uebrigens die <b>Anchors</b>-Eigenschaft zur Verfuegung, aber vielleicht bewirkt sie ja was anderes.

        Vielleicht koenntest Du mir ja aber einen Tip geben, wo man die von dir angesprochenen <b>Hinweise</b> kostenlos herbekommt.

        Salute

        Hartmut

        Comment


        • #5
          Hallo auch zusammen,
          mit Autoscale hat das nichts zu tun und meine zusammenhaengenden Controls sind in einem Panel-Objekt drinnen. Trotzdem verschieben sich die Teile auf anderen Systemen. Wenn ich mir die Verschiebungen so anschaue, dann sind das manchmal an die 50 Pixel. Soviel Spielraum lass ich ganz bestimmt nicht. Tut mir leid, aber alles ist schoen ordentlich gemacht, die Ratschlaege sind beherzigt ;-) und es geht trotzdem nicht. Also, wat nuu? Clau

          Comment


          • #6
            Hallo,

            wenn die Controls auf Panels verteilt sind, verschieben sich aber alle gemeinsam, so das ihre relative Position gleich bleibt. Da der Anwender über die Systemsteuerung die Darstellung und Auflösung seines Systems in bestimmten Grenzen frei wählen kann, darf die eigene Anwendung nicht davon ausgehen, das alles bis aufs Pixel genau an seinem Platz bleibt. Wenn die Position von bestimmten Controls exakt aufeinander abgestimmt werden muss, muss man das notfalls zur Laufzeit sicherstellen (Label1.Left := Memo1.Left). Wichtig ist doch nur, das die relative Position (und nicht die absolule Position) gehalten wird.

            Kostenlose Informationen sind (abgesehen von der Online-Zeit) auf den Web-Seiten von Microsoft im MSDN-Bereich im Themenbereich <b>Windows User Interface</b> zu finden (http://msdn.microsoft.com).

            P.S: Es ist eigentlich logisch, das nicht <b>jedes</b> Beispielprojekt <b>alle</b> Techniken gleichzeitig vorstellen kann. Denn Beispiele sollen so einfach sein, das man nicht lange danach suchen muss

            Comment


            • #7
              Hallo,

              sie verschieben sich eben <b>nicht</b> alle zusammen, sondern gegeneinander, obwohl sie sich zusammen auf einem Panel tummeln. Sorry, aber das ist so. Und mit der Systemaufloesung hat es nichts zu tun, bei manchen Rechnern klappt's, bei manchen nicht.

              Clau

              Comment


              • #8
                Könntet Ihr mir mal von einem angesprochenen Delphi-Beispiel, wo diese Problem ist, ein "gutes" und ein "schlechtes" Capture der Oberfläche schicken.<p>
                Ich habe nämlich keine Ahnung wie ich mir das vorstellen muß.<p>
                Danke, [email protected]
                Schöne Grüße, Mario

                Comment


                • #9
                  Wurde einmal die Einstellung:
                  Eigenschaften von Anzeige, Darstellung, Schriftgrad kontroliert?

                  Wenn dort Groß steht, kommt es zu den selsamsten Effekten

                  Wolfgan

                  Comment


                  • #10
                    Tach alle miteinander,

                    und jetzt schoen der Reihe nach:

                    <b>ANDREAS:</b> habe brauchbares Material im Bezug auf das Platform-SDK gefunden und werde es mir uebers Wochenende zu Gemuete fuehren. Besten Dank an dieser Stelle. Was den Einfluss der Bildschirmaufloesung betrifft, gebe ich mich aber nicht zufrieden. Natuerlich habe ich sichergestellt, dass die Bildschirmaufloesung auf den Test-Rechnern die gleiche ist. Daher sollten relative und absolute Position doch eigentlich identisch sein, oder? Trotzdem habe ich aber das Problem, dass Objekte teilweise ausserhalb meines Fensters liegen. Selbst wenn die Aufloesung unter NT groesser ist als meine passt manchmal nicht alles drauf, ist doch komisch, oder? Und was die Panels angeht, stell dir mal vor du hast eine Anwendung die nur aus einem Statusbar und einem Toolbar mit entsprechenden Toolbuttons besteht. Wie willst du hier deinen Panel-Trick realisieren wenn das ganze mit <b>Autosize</b> formatiert wird? Bei besagtem Beispiel liegt in WinNT bei mir mindestens 1 Knopf im Abseits.

                    <b>MARIO:</b> ich werd Dir mal ein paar Bilder fertig machen und schick sie Dir an deine e.mail.

                    <b>CLAUS:</b> ich find dich toll

                    Und nun an alle:

                    Schoenes Wochenende,

                    Hartmu

                    Comment


                    • #11
                      Tach Wolfgang,
                      habe das mit den Schriftgroessen soebend kontrolliert. Und was soll ich sagen..<b>VOLLTREFFER!</b> Auch auf meinem Computer sieht jetzt alles schoen bescheiden aus. Hast Du vielleicht eine Loesung zu dem Problem bzw. wie kann ich aus meiner Software heraus abfragen, ob grosse oder kleine oder irgend eine andere Schriftart gewaehlt ist? Vielleicht ueber <b>PixelsPerInch</b>?

                      Gruesse
                      Hartmu

                      Comment


                      • #12
                        Hallo Hartmut,
                        <p>ich habe Deine Grafiken mal angeschaut. Die Probleme resultieren eindeutig
                        aus den Font-Gr&ouml;&szlig;en und die ToolBar-Komponente verkraftet das
                        gar nicht.
                        <p><tt>Function Get_Font_Groesse: Integer; // Smallfont 96 und bei BigFont
                        120 ; Bei Win98 sind glaub ich auch Zwischenwerte m&ouml;glich</tt>
                        <br><tt>var dc&nbsp;&nbsp;&nbsp; : hdc;</tt>
                        <br><tt>begin</tt>
                        <br><tt>&nbsp;dc := createDC('DISPLAY','','',NIL);</tt>
                        <br><tt>&nbsp;Result := GetDeviceCaps(dc, LOGPIXELSY);</tt>
                        <br><tt>&nbsp;ReleaseDC(0,dc);</tt>
                        <br><tt>end;</tt>
                        <p>Wenn Du also mit 96 dpi entwickelst und bei 120 dpi startest, skaliert
                        Delphi halt die Anwendung. Auch meine Anwendungen haben schon mit solchen
                        Ausw&uuml;chsen gek&auml;mpft. Aber Delphi bietet beim Formular die Eigenschaft
                        Scaled, die standardm&auml;&szlig;ig True ist. Setze diese einfach mal
                        in allen Formularen auf False und Erzeuge neu. Dann sollte es gehen.
                        <p>Eigenschaften, wie z.B. die Men&uuml;h&ouml;he kann man zwar nicht beeinflussen,
                        aber diese Unterschiede sind zu verkraften.
                        <p>Viel Erfolg, Mari
                        Schöne Grüße, Mario

                        Comment


                        • #13
                          Hi Mario,

                          besten Dank fuer das Listing. Die meisten Probleme kann ich nun mittlerweile mittels scaleBy und dem PixelsPerInch-wert ausbuegeln. Der Rest scheint allerdings nur ueber Handarbeit zu loesen zu gehen.

                          ciao

                          Hartmu

                          Comment


                          • #14
                            Hallo,

                            in meinen Programmen habe ich mir wie folgt geholfen.
                            Entwicklung unter "kleinen Schriftarten" und dann alle (!) Fenster, Schaltflächen etc. in der Größe anpassen,
                            z.B.

                            {Faktoren für Umrechnung kleine Fonts -> große Fonts}

                            FontFak := LOWORD(GetDialogBaseUnits)/8.0;

                            {Größe des Hauptformulars}

                            with HauptFormular do begin
                            height := round(MyFormHeight*FontFak);
                            width := round(MyFormWidth*FontFak);
                            end

                            Comment

                            Working...
                            X