Announcement

Collapse
No announcement yet.

Panelgröße verändern durch anwender

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

  • Panelgröße verändern durch anwender

    hallo,

    ich habe einen panel der ein Fenster simulieren soll,
    deswegen wäre es geschickt der anwender könnte zur laufzeit die größe des panels verändern.
    wie macht man sowas?

    Gruß

    Markus
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    Du mußt dir die events holen, OnMouseDown, OnMouseUp, OnMouseMove (oder wie die heissen) must halt mal nachschauen. Da must du bei onMouseDown eine Variable setzen, z.b. MouseIsDown:=true; Bei OnMouseUp setzt du das auf False. Desweiteren Mußt du Die MousePosition bei OnMouseDown speichern. Bei dem Event OnMouseMove mußt du den unterschied der aktuelle Position der Maus mit der gespeicherten vergleichen und je nach dem dein fenster größer oder Kleiner machen, aber nur, wenn die Variable MouseIsDown = True ist.<br>
    Wieso nimmst du nicht gleich eine Form

    Comment


    • #3
      danke! ich probiere es mal!
      unser projekt hat schon so viele formulare, dass wir stets versuchen ein neues formular zu vermeiden
      Herzliche Grüße

      Markus Lemcke
      barrierefreies Webdesign

      Comment


      • #4
        folgender lösungsansatz, funzt wenn der mauszeiger rechts ist oder unten! borderwidth ist 3 vom panel:

        <pre>
        procedure TFormMainBike.pnlMehereArtikelMouseMove(Sender: TObject;
        Shift: TShiftState; X, Y: Integer);
        begin
        //Randbereich prüfen
        //Mauszeiger rechts
        if x > pnlMehereArtikel.Width-pnlMehereArtikel.BorderWidth-5 then
        begin
        screen.Cursor := crSizeWE;
        if Shift = [ssleft] then pnlMehereArtikel.width := x;
        end else
        if x < pnlMehereArtikel.left+pnlMehereArtikel.BorderWidth +5 then
        begin
        screen.Cursor := crSizeWE;
        end else
        //Mauszeiger unten
        if y > pnlMehereArtikel.height-pnlMehereArtikel.BorderWidth-5 then
        begin
        screen.Cursor := crSizeNS;
        if Shift = [ssleft] then pnlMehereArtikel.Height := y;
        end else
        //Mauszeiger oben
        if y < pnlMehereArtikel.top+pnlMehereArtikel.BorderWidth+ 5 then
        begin
        screen.Cursor := crSizeNS;
        if Shift = [ssleft] then pnlMehereArtikel.Height := pnlMehereArtikel.Height - y;
        end;
        end;
        </pre>

        gruß

        Marku
        Herzliche Grüße

        Markus Lemcke
        barrierefreies Webdesign

        Comment


        • #5
          irgendwas müsste man doch auf mit <b>Perform(wm_Syscommand, SC_SIZE, 0); </b> machen können oder nicht?

          Gruß

          Marku
          Herzliche Grüße

          Markus Lemcke
          barrierefreies Webdesign

          Comment


          • #6
            Hi Markus,
            .
            nicht, dass ich Dich davon abhalten will. Aber, hast Du schon daran gedacht, dass Deine Unit immer voller durch die zusätzlichen Routinen wird?
            Auch wenn es immer mehr Formulare werden, hast Du immer noch eine bessere Übersicht, zumindest dann, wenn Du den Formularen vernünftige Namen gibst, um sie in der Liste wiederzufinden (z.B. pnlMehereArtikel --> frmMultiArtikelAuswahl oder frmArtikelMehrfachAuswahl).
            Ich weiss zwar nicht, wieviele Formulare Delphi verwalten kann und ab wann es Speicherprobleme gibt, aber ich habe schon an Projekten mit mehr als 300 Formularen gearbeitet.
            .
            Gruß
            Michae

            Comment


            • #7
              hi michael,

              wenn es nach mir gehen würde, hätte ich auch ein neues formular gemacht!

              gruß

              marku
              Herzliche Grüße

              Markus Lemcke
              barrierefreies Webdesign

              Comment


              • #8
                Also, ich würde auch ein Formular nehmen.
                Nur weil es so viele Formulare sind ist kein grund für mich. Ich wäre manchmal froh, wenn ich noch sachen auf anderen Fromularen auslgaern könnte weil 100k Source in einer unit ist doch schon ein bissel viel

                Comment


                • #9
                  ich habe es weitgehend hinbekommen auch mit panel!
                  war halt etwas "gebastel"
                  Herzliche Grüße

                  Markus Lemcke
                  barrierefreies Webdesign

                  Comment

                  Working...
                  X