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 Suche eine TImage Komponente mit Scrollbars (https://www.delphipraxis.net/15652-suche-eine-timage-komponente-mit-scrollbars.html)

Tim.exe 2. Feb 2004 09:58


Suche eine TImage Komponente mit Scrollbars
 
Hallo,

kennt jemand zufällig eine TImage ähnliche Komponente die entweder Scrollbars oder eine Propety wie z.B. "StretchToFit" hat?

Die originale TImage Komponente verzerrt zu sehr große Bilddateien (Autosize, Stretch)...

Jens Schumann 2. Feb 2004 10:03

Re: Suche eine TImage Komponente mit Scrollbars
 
Hallo,
lege das TImage auf eine TScrollBox und setzte die Range Eigenschaften von HorzScrollBar
und VertScrollBar auf die Abmessungen des Bildes

Tim.exe 2. Feb 2004 10:15

Re: Suche eine TImage Komponente mit Scrollbars
 
...Das mir das nicht eingefallen ist...

Vielen Dank :P

Schwedenbitter 30. Sep 2008 14:15

Re: Suche eine TImage Komponente mit Scrollbars
 
Zitat:

Zitat von Jens Schumann
Hallo,
lege das TImage auf eine TScrollBox und setzte die Range Eigenschaften von HorzScrollBar
und VertScrollBar auf die Abmessungen des Bildes

Ich bin der Meinung, dass das in die FAQ sollte, falls es dort nicht schon steht. Ich habe einen ganzen Tag mit genau diesem Problem zugebracht. Dabei ist es so einfach.

Mich stört aber noch etwas anderes:
Ich habe in meiner ScrollBox ein einziges Bild, welches ich auf ButtonsKlicks bzw. Tastatureingaben jeweils aktualisiere. Ich möchte das auch mit dem Scrollrad können. Beim Hochscrollen ist das auch kein Problem. Die Lösung ist folgende:

Delphi-Quellcode:
Procedure TForm1.ScrollBox1MouseWheelUp(Sender: TObject; Shift: TShiftState;
   MousePos: TPoint; var Handled: Boolean);
Begin
   With ScrollBox1.VertScrollBar Do
   Begin
      If (Position=0) And         // Wenn Scrollbar ganz oben und
      (ListBox2.ItemIndex>0) Then // mind. 2ter Eintrag in Liste
      Begin
         ListBox2.ItemIndex:=Pred(ListBox2.ItemIndex);
         ShowPicture;            // Bild laden, Range anpassen etc.
         Position:=Range;         // ScrollBar soll ganz unten starten
      End
      Else Position:=Position-Increment;
   End;
   Handled:=true;
End;
Vom Ansatz her hatte ich gehofft, beim nach unten Scrollen würde das hier funktionieren, aber es geht nicht:
Delphi-Quellcode:
Procedure TForm1.ScrollBox1MouseWheelDown(Sender: TObject; Shift: TShiftState;
   MousePos: TPoint; var Handled: Boolean);
Begin
   With ScrollBox1.VertScrollBar Do
   Begin
      If (Position>=Range) And (ListBox2.ItemIndex<Pred(ListBox2.Count)) Then
      Begin
      ...
Ich habe es mir ausgeben lassen: Leider ist Position nie so groß wie Range.

Wie kann ich herausfinden, ob der Scrollvorgang unten angekommen ist. Bestimmt ist es ganz einfach und ich sehe nur den Wald vor lauter Bäumen wieder nicht ...

Gruß, Alex

Jens Schumann 30. Sep 2008 14:18

Re: Suche eine TImage Komponente mit Scrollbars
 
Hallo,
versuche es mal so

Delphi-Quellcode:
If (Position>=(Range-Image.Height))

nahpets 30. Sep 2008 14:47

Re: Suche eine TImage Komponente mit Scrollbars
 
Hallo,

gute Grafikkomponenten findest Du bei HiComponents, sie sind nicht kostenlos, allerdings halte ich die Preise für die Leistungsfähigkeit dieser Komponenten durchaus für angebracht.

Stephan

Schwedenbitter 30. Sep 2008 16:05

Re: Suche eine TImage Komponente mit Scrollbars
 
Zitat:

Zitat von Jens Schumann
Delphi-Quellcode:
If (Position>=(Range-Image.Height))

Das kann es leider nicht sein. Trotzdem Danke fürs Mitdenken.
Ich setzte Range gerade mit Hilfe von Image.Height. Da beide folglich gleich groß sind, wäre das Ergebnis stets 0 und Position dann immer größer/gleich null.

Ich habe mir gerade die Properties ButtonSize, Margin, Size und ThumbSize angesehen. Die sind auch immer alle 0. Da frage ich mich glatt, wozu sind sie da?

Andere Vorschläge?

Jens Schumann 30. Sep 2008 16:09

Re: Suche eine TImage Komponente mit Scrollbars
 
Zitat:

Zitat von Schwedenbitter
Zitat:

Zitat von Jens Schumann
Delphi-Quellcode:
If (Position>=(Range-Image.Height))

Das kann es leider nicht sein.

Stimmt. Du musst nicht die Höhe des Images abziehen, sondern den sichtbaren Bereich der ScrollBox
Delphi-Quellcode:
If (Position>=(Range-ScrollBox.ClientHeight))

Schwedenbitter 30. Sep 2008 17:09

Re: Suche eine TImage Komponente mit Scrollbars
 
Zitat:

Zitat von Jens Schumann
Stimmt. Du musst nicht die Höhe des Images abziehen, sondern den sichtbaren Bereich der ScrollBox
Delphi-Quellcode:
If (Position>=(Range-ScrollBox.ClientHeight))

Bingo! :cheers: und Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 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