Probleme mit TScrollBars...
Hi!
Habe folgendes Problem. Ich habe eine visuelle Komponente, die ich von TCustomPanel ableite. Nun will ich in diese Ausgabe der Komponente auch hinein- bzw. hinauszoomen können. Damit man aber nun die neu berechnete Ausgabe auch komplett bewundern kann, bräuchte man Scrollbalken, um den kompletten Bereich anschauen zu können. Die hab ich auch angelegt, die werden auch angezeigt, aber wenn ich den Regler verschiebe tut sich nichts am Bild. Ich hab bestimmt hundert Dinge vergessen zu beachten. Könnte mir da vielleicht jemand auf die Sprünge helfen? Das wäre toll, danke!!
Delphi-Quellcode:
constructor Create(AOwner: TComponent);
begin ScrollBarHor := TScrollBar.Create(Self); ScrollBarHor.Parent := Self; ScrollBarHor.Align := alBottom; ScrollBarHor.Kind := sbHorizontal; ScrollBarHor.Visible := False; ScrollBarHor.SmallChange := 5; ScrollBarHor.LargeChange := 50; ScrollBarHor.OnScroll := ScrollBarHorScroll; ScrollBarVer := TScrollBar.Create(Self); ScrollBarVer.Parent := Self; ScrollBarVer.Align := alRight; ScrollBarVer.Kind := sbVertical; ScrollBarVer.Visible := False; ScrollBarVer.SmallChange := 5; ScrollBarVer.LargeChange := 50; ScrollBarVer.OnScroll := ScrollBarVerScroll; end;
Delphi-Quellcode:
procedure TCustomTreemapChart.Zoom;
var Scale: Double; Image: TImage; begin IsZoom := True; ScrollBarVer.Visible := True; ScrollBarHor.Visible := True; Scale := (100 + ZoomFactor) / 100; ZoomRect.Left := 0; ZoomRect.Top := 0; ZoomRect.Right := Round(Width * Scale); ZoomRect.Bottom := Round(Height * Scale); if (ZoomRect.Bottom < Height) or (ZoomRect.Right < Width) then begin ScrollBarVer.Visible := False; ScrollBarHor.Visible := False; IsZoom := False; ZoomRect := Rect(0,0,Width,Height); end; if (ZoomRect.Bottom > 3*Height) or (ZoomRect.Right > 3*Width) then begin IsZoom := False; exit; end; DoublebufferedBitmap.Height := ZoomRect.Bottom - ScrollBarHor.Height; DoublebufferedBitmap.Width := ZoomRect.Right - ScrollBarVer.Width; ScrollBarHor.Min := 0; ScrollBarHor.Max := DoublebufferedBitmap.Width; ScrollBarVer.Min := 0; ScrollBarVer.Max := DoublebufferedBitmap.Height; DrawChart(DoublebufferedBitmap.Canvas, ZoomRect); Canvas.Draw(0,0, DoublebufferedBitmap); end; |
Re: Probleme mit TScrollBars...
Muss ich irgendwie noch mein Panel vergrößern, damit das DoubleBufferedBitmap komplett drauf passt? Wenn ja, wie ginge das denn zur Laufzeit? Oder bin ich auf dem Holzweg :)? Aber dann würden die Scrollbars ja auch teilweise nicht sichtbar sein, weil diese dann auch außerhalb des sichtbaren Bereichs liegen würden...
|
Re: Probleme mit TScrollBars...
Hallo,
wäre es nicht einfacher, wenn Du Deine Komponente auf eine Scrollbox legst. Dann dürfte das Scrollen im wesentlichen automatisch gehen. MfG Klaus |
Re: Probleme mit TScrollBars...
Ich hab schon versucht, damit irgendwas zustande zubekommen, aber ich weiß nich, wie ich meine Komponente auf
die Scrollbox packen soll, was auch immer ich versucht habe, hat diverse Fehlermeldungen ausgelöst. Zwar nich beim compilieren, aber zur Laufzeit :(. |
Re: Probleme mit TScrollBars...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 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