Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Größe von GroupBox ändern (https://www.delphipraxis.net/59230-groesse-von-groupbox-aendern.html)

Knotti2005 19. Dez 2005 18:54


Größe von GroupBox ändern
 
Gibt es eine Möglichkeit damidt der Benutzer die Größe der GroupBox ähnerlich wie bei der Form (BorderStyle - bsSizeable) ändern kann?

torud 21. Dez 2005 13:32

Re: Größe von GroupBox ändern
 
Du solltest Dir vielleicht mal die Komponentensammlung von Greatis ansehen. Die können damit sämtliche Controls zur Laufzeit verschieben und skalieren, automatisiert anordnen und vieles mehr. Ist aber nicht kostenlos!

Und hier der Link zum Produkt

shmia 21. Dez 2005 13:45

Re: Größe von GroupBox ändern
 
Verwende doch den TSplitter.
Dies reicht meist aus, um die üblichen Benutzerwünsche zu erfüllen.

eddy 21. Dez 2005 15:33

Re: Größe von GroupBox ändern
 
Hallo,

ich habe sowas mal vor einiger Zeit zusammengebastelt. Ist sicher nicht perfekt, aber vielleicht kann es dir als Basis für eine Lösung deines Problems dienen:

Delphi-Quellcode:
//-------------- Größenänderung von Objecten -----------------------------------
{
  Anwendung in den Objekt-Ereignissen OnMouseMove, OnMouseDown und OnMouseUp:
  FAllgUP2.ChgSizeMMove(Sender, Shift, X,Y);
  FAllgUP2.ChgSizeMDown(Sender, Button);
  FAllgUP2.ChgSizeMUp(Sender, Button);
}
procedure TFAllgUP21.ResetMBLeft;
begin
  fMBLeftDown := false;
  fSzTyp := 0;
end;

procedure TFAllgUP21.ChgSizeMUp(Sender: TObject; Button: TMouseButton);
begin
  fMBLeftDown := false; //not (Button = mbLeft);
end;

procedure TFAllgUP21.ChgSizeMDown(Sender: TObject; Button: TMouseButton);
begin
  fMBLeftDown := Button = mbLeft;
  fLstTyp := fSzTyp;
end;

procedure TFAllgUP21.ChgSizeMMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
const
  MinHeight = 50;  //damit das Objekt nicht vom Bildschirm verschwinden kann
  MinWidth = 50;
var
  cleft, cwidth,
//  ctop,
  cheight : integer;
begin
//  ctop := (Sender as TControl).Top;
  cheight := (Sender as TControl).Height;
  cleft := (Sender as TControl).Left;
  cwidth := (Sender as TControl).Width;

  if (y > cheight - 15) and (y < cHeight + 15) then begin
    fSzTyp := 2;
    if (x > cwidth - 15) and (x < cwidth) then fSzTyp := 5;
  end
  else if y < 15 then fSzTyp := 1
  else if x < 15 then fSzTyp := 3
  else if (x > cwidth - 15) and (x < cwidth) then fSzTyp := 4
  else fSzTyp := 0;

  case fSzTyp of
    1 : (Sender as TControl).Cursor := crSizeAll;
    2 : (Sender as TControl).Cursor := crVSplit;
    3,
    4 : (Sender as TControl).Cursor := crHSplit;
    5 : (Sender as TControl).Cursor := crSizeNWSE;
  else (Sender as TControl).Cursor := crDefault;
  end; // of case

  if fMBLeftDown then begin
    case fLstTyp of
      1 : begin
            if (ssShift in Shift) then begin
              (Sender as TControl).Align := alClient;
              (Sender as TControl).Align := alNone;
            end
            else begin
              ReleaseCapture;
              (Sender as TControl).perform(WM_SysCommand,SC_DragMove,0);
            end;
{            if x > 25 then begin
              ReleaseCapture;
              (Sender as TControl).perform(WM_SysCommand,SC_DragMove,0);
            end
            else if (y < 25) and (x < 25) and (ssShift in Shift) then begin
              (Sender as TControl).Align := alClient;
              (Sender as TControl).Align := alNone;
            end;
}
          end;
      2 : (Sender as TControl).Height := Max(y, MinHeight);
      3 : begin
            (Sender as TControl).Width := Max(cwidth - x, MinWidth);
            (Sender as TControl).Left := cleft + x;
          end;
      4 : (Sender as TControl).Width := Max(x, MinWidth);
      5 : begin
            (Sender as TControl).Height := Max(y, MinHeight);
            (Sender as TControl).Width := Max(x, MinWidth);
          end;
    end; // of case
  end;
  SetDf;
end;
//-------------- end of Größenänderung von Objecten ----------------------------
Anwendung:

Delphi-Quellcode:

gbSeekArt : TGroupBox; // oder auch TJvgGroupBox;

procedure TFAuf.gbSeekArtMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  FAllgUP21.ChgSizeMMove(Sender, Shift, X,Y);
end;

procedure TFAuf.gbSeekArtMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  FAllgUP21.ChgSizeMDown(Sender, Button);
end;

procedure TFAuf.gbSeekArtMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  FAllgUP21.ChgSizeMUp(Sender, Button);
  FAllgUP21.WrObjPos(inifile, gbSeekArt); // speichert Position und Größe in eine Ini-Datei
end;
mfg
eddy

Knotti2005 27. Dez 2005 21:35

Re: Größe von GroupBox ändern
 
kann mir jemaand helfen bei diesem PRoblembin ich noch nicht so richtig weiter...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz