Größe einer Form durch klick auf Image verändern?!



  • Hallo!

    Ich habe folgendes Problem:

    Ich habe eine Form, komplett ohne Rand, usw. Ich möchten nun die Größe der Form ändern, indem ich auf das Image klicke, und durch verschieben des Mauszeigers soll die Form schrumpfen/wachsen. Leider lassen sich die Ereignisse des Images dazu nur bedingt/fast gar nicht verwenden.

    int firstSizex;
    int firstSizey;
    
    void __fastcall TForm2::Image8MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    
    // Überprüfe die Koordinaten beim drücken des linken Mauszeigers
    
        firstSizex=Image8->Left+X;  
        firstSizey=Image8->Top+Y;
    
    }
    
    void __fastcall TForm2::Image8MouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
    
    // Verändere Form durch die Summe von gedrückt-losgelassen
    
    Form2->Height=Form2->Height+Y-firstSizey;
    Form2->Width=Form2->Width+X-firstSizex;
    }
    

    Leider will das aber nicht so ganz funktionieren... Hat da jemand noch ne Idee? Danke schonmal



  • HI,

    hab das auch mal versucht, nur das ich nur so weit gekommen bin das wenn man auf die Form klickt sich die Größe ändert. Vieleicht hilft dir das weiter.

    void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
      Tag = 1;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
    {
      if (Tag == 1)
      {
      ClientWidth = StrToInt(X)+10;
      ClientHeight = StrToInt(Y)+10;
      }
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
      Tag = 0;
    }
    //---------------------------------------------------------------------------
    

    Wenn du es geschaft hast poste es bitte, brauche das auch dringend 😃

    MFG Fregger



  • habs hingekriegt.... Funzt prinzipiell so wie oben beschrieben, da ich aber die Objekte der Klasse TForm 2 dynamisch und somit mit anderen Namen erzeugt habe (ich Dödel 😮 ), konnte es ja gar nicht funktionieren...
    Hier mein Code:

    int firstSizex;
    int firstSizey;
    bool mousepressed=false;
    
    void __fastcall TForm2::Image8MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    
        mousepressed=true;
        firstSizex=X;
        firstSizey=Y;
    }
    
    void __fastcall TForm2::Image8MouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
    mousepressed=false;
    }
    
    void __fastcall TForm2::Image8MouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
    {
    int newy=Y-firstSizey;
    int newx=X-firstSizex;
    
    if(mousepressed && Width+newx>=255 ){ // hier wird noch eine minimale breite geprüft
    
    Height=Image8->Top+Image8->Height;
    Width=Image8->Width+Image8->Left;
    
    }
    

    Du darfst aber nicht vergessen auch die anderen Objekte an die neue Größe des Formulars anzupassen.

    Viel Spaß damit! 😃



  • Hi,

    habs eben Probiert, jedoch funktioniert es nicht richtig, wenn ich es verkleiner oder vergrößern will spring es immer an die gleiche Stelle.


Anmelden zum Antworten