AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Positionierung dynamisch erzeugte Komponenten bei Scrolling

Positionierung dynamisch erzeugte Komponenten bei Scrolling

Ein Thema von Schakko · begonnen am 6. Jan 2007 · letzter Beitrag vom 11. Jan 2007
Antwort Antwort
Schakko

Registriert seit: 6. Jan 2007
2 Beiträge
 
#1

Positionierung dynamisch erzeugte Komponenten bei Scrolling

  Alt 6. Jan 2007, 16:21
Servus Forum,
Ich muss für einen Kunden ein kleines Tool in Delphi programmieren, komme aber eher aus der J2EE / PHP5-Ecke. Dabei ist mir dann auch wohl ein kleiner Denk-Fehler unterlaufen

Kurze Einführung:
Meine Anwendung bezieht sich von einem SOAP-Gateway die benötigten Daten und soll diese als Liste darstellen. Funktioniert auch alles wunderbar, die Erzeugung der Einträge geschieht über eine von mir geschriebene Klasse TCompositeLabel.
Das Tool lädt alle x Sekunden die Daten vom Server, formatiert die Daten um und gibt diese dann aus.
Dazu übergebe ich das SOAP-Result-Set an eine von mir geschriebene Klasse TCompositeLabel.
Bis dahin funktioniert alles wunderbar.

Problem ist nun:
Sobald der Benutzer in der Anwendung nach unten scrollt und die die Einträge neu dargstellt werden, ist die Positionierung in der y-Achse total zerschrotet.

Fehlerursache:
Die dynamisch erzeugten Elemente werden mit der Eigenschaft Top positioniert. Die Koorindaten beziehen sich dabei aber auf das Fenster an sich und nicht auf den Fensterausschnitt.

Wie werden die erzeugten Elemente nun an die richtige Position "gezeichnet"?
Das Problem lässt sich wahrscheinlich einfach lösen, aber ich bin gerade etwas überfragt.
Bei JavaScript wäre es die Funktion window.pageYOffset, die ich benutzen müsste. Gibt es da was gleiches unter Delphi?

Grüße & schon einmal danke im Voraus!
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Positionierung dynamisch erzeugte Komponenten bei Scroll

  Alt 6. Jan 2007, 16:28
Ich weiß ja nicht wie komplex deine Liste aussieht aber vielleicht kannst du dir einfach mal die Komponente TListView ansehen.
Man muss das Rad ja nicht immer neu erfinden
Jan
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#3

Re: Positionierung dynamisch erzeugte Komponenten bei Scroll

  Alt 7. Jan 2007, 10:13
Andere Möglichkeit: die Komponenten in einer Scrollbox erstellen...
Wobei natürlich die o.a. TListView schon eine elegante Möglichkeit darstellt...
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Positionierung dynamisch erzeugte Komponenten bei Scroll

  Alt 7. Jan 2007, 20:18
Wenn ich ein Control mit Top=0 in einer ScrollBox positioniere, dann taucht es immer in der linken oberen Ecke dieser ScrollBox auf, egal wie weit diese auch jeweils gerade mittels ihrer VertScrollBar heruntergescrollt ist!? Imo müsstest Du dann einfach nur die jeweilige 'Strecke', um die die ScrollBox eben gerade heruntergescrollt ist, noch von deinem Wunsch-Top-Wert abziehen:

DeinDynLabel.Top := DeinWunschTop - ScrollBox1.VertScrollBar.Position;
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Schakko

Registriert seit: 6. Jan 2007
2 Beiträge
 
#5

Re: Positionierung dynamisch erzeugte Komponenten bei Scroll

  Alt 11. Jan 2007, 11:43
Erstmal danke für die fixen Replies, war erst heute wieder beim Kunden vor Ort.
Die vorgeschlagenen Lösungen klingen gut und funktionieren auch, ich habs jetzt aber folgendermaßen gelöst:
Die Komponente wird einfach auf ein TPanel gezeichnet (Owner vom TCompositeLabel ist dementsprechend das Panel).
Sobald eine neue Komponente drauf gepackt wird, wird die Höhe des TPanels geändert.

Trotzdem danke für eure Lösungsvorschläge - ist ein echt gutes Forum!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:14 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