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 Probleme mit TScrollBars... (https://www.delphipraxis.net/104817-probleme-mit-tscrollbars.html)

daschaos 11. Dez 2007 10:51


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;

daschaos 11. Dez 2007 11:00

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...

DelphiKlaus 11. Dez 2007 12:00

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

daschaos 11. Dez 2007 12:06

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 :(.

daschaos 11. Dez 2007 15:30

Re: Probleme mit TScrollBars...
 
In einem anderen Forum wurde mir schon ein Tipp gegeben, wie es weiter gehen könnte.

Delphi-Source


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