lvl: [VB6]Formulare in MIDIForm Positionieren

Hallo,
bin noch ein VB anfänger. Also bitte nicht hauen, weil ich mit der Suche nix gefunden habe.

Meine Frage: Ich habe 2 Formulare die Per Button in einem MIDIForm Geöffnet werden.

Nun möchte ich aber nicht das die Fenster aufeinander liegen, sondern das sie einen festen Platz bekommen, an welcher Stelle sie geöffnet werden sollen.

Meine MIDIForm ist auf Vollscreen eingestellt.
Aber die Formulare werden aufeinander geladen.

MfG lvl

PS. Hoffentlich passt das überhaupt hier hin?!?!?

  1. Hi,

    Meine MIDIForm ist auf Vollscreen eingestellt.
    Aber die Formulare werden aufeinander geladen.

    so richtig habe ich nicht verstanden, was Du meinst. Aber vielleicht hilft Dir das weiter:

    Generell müßtest Du mit den Eigenschaften Width, Height, Top und Left arbeiten.

    Die Maße des Anzeigebereichs kriegst Du z. B. mit

    Screen.Width und
    Screen.Height

    heraus.

    Deine Forms haben ja auch Maße, die Du genauso abfragen und zuweisen kannst:

    Me.Width oder
    Element.Width

    Dann noch etwas rechnen und schon kannst Du das Element mit Top in der Vertikalen und mit Left in der Horizontalen positionieren.

    Viele Grüße

    Jörg

    1. Dann noch etwas rechnen und schon kannst Du das Element mit Top in der Vertikalen und mit Left in der Horizontalen positionieren.

      genau das habe ich ausprobiert, leider springt er dennoch nicht auf die angegebene position.

      er soll (left="0" und top="3352") sein, aber er bringt ihn auf ca. left ="50" top="50"

      und nicht top="3352"

      1. Hi,

        er soll (left="0" und top="3352") sein, aber er bringt ihn auf ca. left ="50" top="50"

        hast Du etwa die Anführungszeichen verwendet? ;-)

        Beachte auch, daß diese Angaben Twips sind.

        Viele Grüße

        Jörg

        1. hast Du etwa die Anführungszeichen verwendet? ;-)

          nein, nur zur verdeutlichung

          Beachte auch, daß diese Angaben Twips sind.

          ist mir klar... aber mein erstes objekt ist height=3352
          und dann wollte ich top=3352

          geht aber nicht.

          1. Hi,

            ist mir klar... aber mein erstes objekt ist height=3352
            und dann wollte ich top=3352

            eigentlich ist es so richtig.

            Stimmen denn die Objekte und deren Schreibweisen (z. B. Me.Top = 3352)?
            Wann weist Du die Position zu (Load, Activate, Initialize)?
            Du könntest auch mal den relevanten Code posten, damit man die Umstände sieht.

            Viele Grüße

            Jörg

            1. Du könntest auch mal den relevanten Code posten, damit man die Umstände sieht.

              Ich nutzt MS VB da hab ich ein Eigenschaftenfenster, also kein Code.

              Wie gesagt habe ich eine MIDI Form in der eine Menüleiste ist mit 3 Knöpfen "fenster 1" "fenster 2" "exit"

              Wenn ich nun "fenster 1" anklicke, soll er das Formular "fenster1" in den MIDI Form laden. funktioniert auch...

              Wenn ich anschließend auf "fenster 2" klicke soll zusätzliche "fenster2" geöffnet werden. Funzt auch. er legt es an die pos (left=50 top=50) und nicht wie ich bei fenster2 angegeben habe top=3352

              also liegen die fenster aufeinander.

              exit klappt auch.

              1. Hi,

                Ich nutzt MS VB da hab ich ein Eigenschaftenfenster, also kein Code.

                vor allem dann müßte es funktionieren ...

                Wenn ich anschließend auf "fenster 2" klicke soll zusätzliche "fenster2" geöffnet werden. Funzt auch. er legt es an die pos (left=50 top=50) und nicht wie ich bei fenster2 angegeben habe top=3352

                also liegen die fenster aufeinander.

                Ich habe es auch gerade mal mit Deinen Angaben getestet, es funktioniert. Ist denn das "fenster 1" bei Top = 0 und Left = 0?

                Ansonsten kannst Du das auch mittels Code in die Load-Ereignisse schreiben.

                Viele Grüße

                Jörg

                1. Ansonsten kannst Du das auch mittels Code in die Load-Ereignisse schreiben.

                  ich hab es jetzt wirklich mit
                  fenster 1.top = 3352
                  fenster 1.left = 0

                  ausprobiert und es geht. :)

                  warum auch immer ;)

                  thx

                  1. Hi,

                    ich hab es jetzt wirklich mit
                    fenster 1.top = 3352
                    fenster 1.left = 0

                    ausprobiert und es geht. :)

                    na schön. ;-)

                    warum auch immer ;)

                    Ehrlich gesagt verwende ich das Eigenschaftenfenster auch nur, um entweder den Tabindex festzulegen oder um zu sehen, welche Eigenschaften Objekte haben. Ansonsten schreibe ich alles in den Code, weil es einfach flexibler ist. Meist hängen Eigenschaften von irgendwelchen Berechnungen ab, das kann man in dem Fenster schon mal nicht mehr machen. Spätestens dann, wenn man irgendwelche Drag'n'Drop-Ereignisse schreibt, ist es nur noch hinderlich.

                    Gerade für solche Sachen wie Positionierungen schreibe ich separate Funktionen, auf die dann das ganze Programm zugreifen kann. Wenn dann mal z. B. die Farben des Programms geändert werden müssen, brauche ich das nicht mehr in dem Eigenschaftenfenster jedem Element zuzuweisen, sondern ändere nur noch die Eintragungen in der Funktion. Das wirkt sich dann gleich auf alle Elemente aus. Bei größeren Projekten lasse ich Einstellungen auch mal in Textdateien (meist *.ini) oder in die Registry eintragen.

                    Nur mal so als Erfahrungswert ... ;-)

                    Viele Grüße

                    Jörg