Größenänderung



  • Hallo,

    ich habe links einen TreeView, daneben eine ListBox, dazwischen ein Panel. Wenn ich auf das Panel klicke, Maustaste gedrückt halte und die Maus dann verschiebe sollen sich die Größen der andern beiden Objekte (sichtbar) anpassen. Explorer-Like. Über welches Ereignis kann ich dies realisieren ?

    Andi



  • Mit welcher Version arbeitest Du???? Dafür gibt es doch den TSplitter!

    Ansonsten kann ich Dir nur raten, auf das Ereignis OnMouseMove zu lauschen. Im Parameter "Shift" steht drin, ob eine (und welche) Maustaste gerade gedrückt ist.

    Gruß,
    Andreas



  • Hi,

    hab das Beispiel genommen und versucht zu erweitern.

    Mein Aufbau:
    Linke Seite ein Tree, daneben obere Hälfte ein StringGrid, darunter Memo.

    Bei der Ausführung kann ich über den Splitter den Bereich Tree/Grid verschieben. Das Memo-Feld wird aber darunter in der vollen Fensterbreite angezeigt und es läßt sich die Größe nicht nach oben/unten ändern.

    // Splitter horizontal
      TSplitter* objLR = new TSplitter(Form1);
      // Splitter vertikal
      TSplitter* objUD = new TSplitter(Form1);
    
      objTree->Parent = Form1;
      objTree->Align = alLeft;
      objTree->Width = Form1->ClientWidth/3;
    
      objMemo->Parent = Form1;
      objMemo->Align = alBottom;
      objMemo->Height = Form1->ClientHeight/2;
    
      objLR->Parent = Form1;
      objLR->Left = objTree->Left + objTree->Width + 1;
      objLR->Align = objTree->Align;
    
      objUD->Parent = Form1;
      objUD->Top = objGrid->Top + objGrid->Height + 1;
      objUD->Align = alTop; //objGrid->Align;
    
      objLR->MinSize = Form1->ClientWidth/6;
      objUD->MinSize = Form1->ClientHeight/6;
    
      objGrid->Parent = Form1;
      objGrid->Align = alClient;
    
    //  objMemo->Parent = Form1;
    //  objMemo->Align = alClient;
    


  • Den Splitter kannst du auch aufs form ziehen. Damit wirds dann viel gemütlicher zum designen (-;

    Achte darauf dass du eine der beiden rechten Kompos auf Align-Top(oder Bottom) und die Andere auf Align-Client setzten solltest. Dann klappts auch mit dem nachbarn äääh splitter (-;

    -junix



  • Hallo,

    ändere mal die Reihenfolge der Erstellung:

    1. Erst den Tree in die linke obere Ecke, Align = alLeft
    2. dann den vertikalen Splitter, Align = alLeft,
    3. dann den Stringrid, Align = alClient,
    4. Dann das Memo, Align = alBottom,
    5. Dann den vertikalen Splitter, Align = alBottom.

    Ich hab's probiert, bei mir hat es funktioniert! Achte auch darauf, das ResizeStyle der Splitter nicht auf rsNone steht!

    Gruß,
    Andreas


Anmelden zum Antworten