Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: [FMX] Splitter in einem bestimmten Bereich verschieben

  Alt 10. Jul 2013, 00:07
Oh, ich kann Dein Formular mit XE3 gar nicht öffnen. Da ist offenbar noch einiges geschraubt worden.

Für die erste Frage kannst Du vielleicht TSplitter überschreiben und Grenzwerte für X+Y festlegen.
Die sind natürlich evtl. etwas schwierig zu ermitteln.
Alternativ könntest Du eine Ereignisbehandlung OnIsSplitterInRange ausführen und wenn False zurückgeliefert wird Veränderungen verweigern.
Delphi-Quellcode:
procedure TSplitter.MouseMove(Shift: TShiftState; X, Y: Single);
var
  NewSize, Split: Single;
  RangeResult: Boolean;
begin
  inherited;
  if FPressed and Assigned(FControl) then
  begin
// X und Y "korrigieren"
// if Assigned(fOnIsSplitterInRange) then
// begin
// fOnIsSplitterInRange(Self, RangeResult);
// if not RangeResult then Exit;
// end; ... irgendwie sowas
    CalcSplitSize(X, Y, NewSize, Split);
    if DoCanResize(NewSize) then
    begin
      FNewSize := NewSize;
      FSplit := Split;
      UpdateControlSize;
    end;
  end;
end;
Constraints für Deine Panels gibt es noch nicht - oder?
Evtl. deren Breite immer wieder auf einen Maximalwert setzen?

So ganz verstehe ich Deine Fragen aber noch nicht. Kann morgen Abend das mal unter XE3 nachbauen...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat