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 Bilder nebeneinander auf TScrollbox (https://www.delphipraxis.net/74695-bilder-nebeneinander-auf-tscrollbox.html)

danku 7. Aug 2006 17:43


Bilder nebeneinander auf TScrollbox
 
ich lade die bilder über tdirectorylistbox auf eine tscrollbox.

das anordnen versuche ich so zu realisieren:

Delphi-Quellcode:
  nebeneinander := (scrollbox1.clientwidth - abstand) div (groesse +
      abstand);    
    if dateien.count*(Groesse+Abstand+13) < nebeneinander then nebeneinander := dateien.count;
    untereinander := (dateien.count div nebeneinander) +
      ord(dateien.count mod nebeneinander > 0);
    for y := 0 to untereinander - 1 do
      for x := 0 to nebeneinander - 1 do begin
      if z < dateien.count then begin
         temp := TImage.create(scrollbox1);
          temp.tag := z;
          temp.width := groesse;
          temp.height := groesse;
          temp.parent := scrollbox1;
          temp.left := abstand + x * (groesse + abstand);
          temp.top := abstand + y * (groesse + abstand);
es wird aber immer nur eins angezeigt.
(d.h. immer das aktuelle wechselt automatisch und überdeckt das vorhergehende)

die bilder sollen aber alle auf die tscrollbox nebeneinander geladen werden.
wer kann mir helfen?

danku 8. Aug 2006 15:25

Re: Bilder nebeneinander auf TScrollbox
 
ist die problemstellung zu kompliziert formuliert?

danku 10. Aug 2006 21:19

Re: Bilder nebeneinander auf TScrollbox
 
sonst hilft doch immer einer ... :cry:

DGL-luke 10. Aug 2006 22:26

Re: Bilder nebeneinander auf TScrollbox
 
wo wird denn z bearbeitet?

danku 11. Aug 2006 08:00

Re: Bilder nebeneinander auf TScrollbox
 
der obige code hat sich geändert.
ich habe meinen code überarbeitet und mal das probiert:


Delphi-Quellcode:
 

//Thumbnails erstellen
for i:=0 to dateien.count -1 do
begin
application.processmessages;

// Bild erzeugen und laden
temp := TImage.Create(scroller); //Erzeugt ein TImage
temp.Parent := scroller; //Macht es auf Form1 sichtbar

abstand:=2;
   nebeneinander:=20;
  //nebeneinander := (thumbbox.clientwidth - abstand) div (groesse +  abstand);    

    if dateien.count > thumbbox.ClientWidth then thumbbox.ClientWidth := dateien.count;
    //untereinander := (dateien.count div nebeneinander) + ord(dateien.count mod nebeneinander > 0);

      for x := dateien.count to nebeneinander - 1 do begin
          temp.width := groesse;
          temp.left := dateien.count+abstand + x; //* (groesse + abstand);
          temp.top := 0; //abstand + y * (groesse + abstand);

DGL-luke 11. Aug 2006 12:25

Re: Bilder nebeneinander auf TScrollbox
 
komische einrückung... ich steig da nicht durch und hab deshalb einfach mal hingeschrieben, wies ich machen würde.

Delphi-Quellcode:
var fnames: array of SysUtils.TFileName;
x,y: Integer; //temp vars
stepx,stepy: Integer; //abstand zwischen bildern
countx: Integer; //anzahl bilder nebeneinander
Padding: Integer; //abstand vom rand der scrollbox
wx,wy: Integer // Breite/Höhe

countx := 0;

for i := low(fnames) to high(fnames) do
  begin
    x := Padding + (i div countx) * stepx;
    y := Padding + (i mod countx) * stepy;

    Image := TImage.Create(ScrollBox);
    Image.Parent := ScrollBox;
    Image.LoadFromFile(fnames[i]);
    image.Width := wx;
    image.height := wy;
    image.left := x;
    image.right := y;
  end;
was du fürs scaling einstellen musst (stretchmode etc.), hab ich grad nicht im kopf. evtl. muss man auch das mod und das div da oben vertauschen... is ja noch früh ;)

Ich würd dir übrigens empfehlen, dafür TImage32 zu benutzen. Das hat viel bessere Skalierungsfilter.


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