Forum: Algorithmen, Datenstrukturen und Klassendesign
by Bjoerk,
10. Jan 2014
Sehr schön. Bin eigentlich auch kein Freund von exzessiven Casts und die InflateRect Variante mit 4 Parametern kannte ich nicht. Thanx!
Man kann am Ende der function noch ergänzen (erforderlich, falls keine Scrollbars).
Result.Bottom := Min(Result.Bottom, Sender.ClientHeight);
Result.Right := Min(Result.Right, Sender.ClientWidth);
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Bjoerk,
9. Jan 2014
Heut' nacht ist mir noch das eingefallen:
function ClientRangeRect(Sender: TObject): TRect;
var
O: TPoint;
begin
// Sender = Client, Parent = ScrollBox, Result in Client-Koordinaten;
O := TControl(Sender).ClientToParent(Point(0, 0), TControl(Sender).Parent);
Result.TopLeft := TControl(Sender).Parent.ClientRect.TopLeft;
Result.BottomRight :=...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Bjoerk,
8. Jan 2014
Ich probier' jetzt schon eine ganze Weils das BottomRight des sichtbaren Bereichs einer ScrollBox zu finden? :gruebel:
RangeRect.Left := ScrollBox.HorzScrollBar.Position;
RangeRect.Top := ScrollBox.VertScrollBar.Position;
RangeRect.Right := f(ScrollBox.HorzScrollBar.Range ?, ScrollBox.HorzScrollBar.Position ?, ScrollBox.ClientRect ?)
RangeRect.Bottom := f(..);