AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamische Scrollbox

Ein Thema von delphicoder123 · begonnen am 11. Jul 2019 · letzter Beitrag vom 28. Jul 2019
Antwort Antwort
Seite 1 von 2  1 2      
delphicoder123

Registriert seit: 14. Feb 2019
102 Beiträge
 
#1

Dynamische Scrollbox

  Alt 11. Jul 2019, 14:00
Hallo,
in meinem Formular habe ich eine Scrollbox. Das Formular hat die Höhe vom Bildschirm.
Innerhalb der Scrollbox habe ich ein TImage (Scrollbox und TImage sind alClient ausgerichtet).
Die Scrollbox soll nur eine Scrollbar haben, wenn der erzeugte Inhalt nicht auf das Image draufpasst. Inhalte sind Zeichnungen in Form von Rechtecken.
Die Scrollbox soll auch nur so hoch sein, wie der erzeugte Inhalt, sollte aber mindestens X Pixel hoch sein.


Das Schwierige wird sein, die Scrollbar ein und auszublenden. Wie kann ich das realisieren?
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
672 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Dynamische Scrollbox

  Alt 11. Jul 2019, 16:24
Hallo,
in meinem Formular habe ich eine Scrollbox. Das Formular hat die Höhe vom Bildschirm.
Innerhalb der Scrollbox habe ich ein TImage (Scrollbox und TImage sind alClient ausgerichtet).
Die Scrollbox soll nur eine Scrollbar haben, wenn der erzeugte Inhalt nicht auf das Image draufpasst. Inhalte sind Zeichnungen in Form von Rechtecken.
Die Scrollbox soll auch nur so hoch sein, wie der erzeugte Inhalt, sollte aber mindestens X Pixel hoch sein.


Das Schwierige wird sein, die Scrollbar ein und auszublenden. Wie kann ich das realisieren?
Setze Align für das TImage auf alNone und left und top auf 0. Du mußt dann image.width und height and die Größe des Inhalts anpassen, das geht nicht von selbst. Dabei mußt Du nicht nur das TImage selbst anpassen sondern auch image.picture.bitmap width und height, das ist nicht automatisch. Die Scrollbox bekommt scrollbars when ihr Inhalt über die Grenzen der Client area hinausreicht, das ist automatisch.
Peter Below
  Mit Zitat antworten Zitat
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Dynamische Scrollbox

  Alt 12. Jul 2019, 08:55
Du mußt dann image.width und height and die Größe des Inhalts anpassen, das geht nicht von selbst.[/B]
TImage hat die Eigenschaft AutoSize. Width & Height muss also nicht selbst angepasst werden.
Andreas Lauß
Blog
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
672 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Dynamische Scrollbox

  Alt 12. Jul 2019, 12:55
Du mußt dann image.width und height and die Größe des Inhalts anpassen, das geht nicht von selbst.[/B]
TImage hat die Eigenschaft AutoSize. Width & Height muss also nicht selbst angepasst werden.
Stimmt, man muss nur die Größe der Bitmap anpassen.
Peter Below
  Mit Zitat antworten Zitat
delphicoder123

Registriert seit: 14. Feb 2019
102 Beiträge
 
#5

AW: Dynamische Scrollbox

  Alt 22. Jul 2019, 10:48
Du mußt dann image.width und height and die Größe des Inhalts anpassen, das geht nicht von selbst.[/B]
TImage hat die Eigenschaft AutoSize. Width & Height muss also nicht selbst angepasst werden.
Hallo,
wenn ich das TImage auf align none, top und left auf 0 setze, dann passt sich die Breite und Höhe des TImage nicht
anhand des Inhalts an. Es behält die gleiche Größe.
Das TImage ist innerhalb der Scrollbox.
Eine Bitmap verwende ich in meinem Formular nicht.

Geändert von delphicoder123 (22. Jul 2019 um 10:52 Uhr)
  Mit Zitat antworten Zitat
delphicoder123

Registriert seit: 14. Feb 2019
102 Beiträge
 
#6

AW: Dynamische Scrollbox

  Alt 22. Jul 2019, 20:59
Das wäre der zugehörige Code dazu.

Delphi-Quellcode:
an I implement this?
These questions are so important.

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    ScrollBox1: TScrollBox;
    Image1: TImage;
    procedure FormActivate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin
  left:=5;
  top:=10;
  form1.Width:=Screen.Width-15;
  form1.Height:=Screen.Height-50;
  ScrollBox1.Align:=alClient;
  image1.Left:=0;
  image1.Top:=0;
  image1.Width:=ScrollBox1.Width;
  image1.Height:=ScrollBox1.Height;
  image1.Canvas.Rectangle(1400,50,2000,100);
end;

end.
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
672 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Dynamische Scrollbox

  Alt 23. Jul 2019, 10:37
Du mußt dann image.width und height and die Größe des Inhalts anpassen, das geht nicht von selbst.[/B]
TImage hat die Eigenschaft AutoSize. Width & Height muss also nicht selbst angepasst werden.
Hallo,
wenn ich das TImage auf align none, top und left auf 0 setze, dann passt sich die Breite und Höhe des TImage nicht
anhand des Inhalts an. Es behält die gleiche Größe.
Das TImage ist innerhalb der Scrollbox.
Eine Bitmap verwende ich in meinem Formular nicht.
Doch, wenn Du auf dem image.canvas zeichnest dann verwendest Du eine Bitmap, allerdings eine, die TImage für dich anlegt (über image.picture.bitmap kann man darauf zugreifen). du mußt die Größe dieser Bitmap ändern wenn Du mehr Zeichenfläche brauchst. Ob image.autosize das mnitbekommt mußt Du testen, kann sein, dass es nur zuschlägt, wenn man eine Grafik aus einer Datei lädt. Oh, und Image.stretch und image.center sollten false sein.
Peter Below
  Mit Zitat antworten Zitat
delphicoder123

Registriert seit: 14. Feb 2019
102 Beiträge
 
#8

AW: Dynamische Scrollbox

  Alt 23. Jul 2019, 13:31
Was mache ich falsch?

Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    ScrollBox1: TScrollBox;
    Image1: TImage;
    procedure FormActivate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin
  ScrollBox1.Align:=alClient;
  ScrollBox1.HorzScrollBar.Visible:=true;
  image1.Align:=alnone;
  image1.Left:=0;
  image1.Top:=0;
  image1.Stretch:=false;
  image1.center:=false;
  image1.Picture.Bitmap.Width:=900;
  image1.Picture.Bitmap.Height:=900;
  image1.Canvas.Rectangle(600,600,800,800);
end;

end.
Miniaturansicht angehängter Grafiken
unbenannt.png  
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: Dynamische Scrollbox

  Alt 23. Jul 2019, 13:34
Wo ist das Bitmap für Image1 das du geladen hast? Sehe keins..

gruss
  Mit Zitat antworten Zitat
delphicoder123

Registriert seit: 14. Feb 2019
102 Beiträge
 
#10

AW: Dynamische Scrollbox

  Alt 23. Jul 2019, 14:02
Ich weiß nicht, wie das geht
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06: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