AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Position in Scrollbox relativ zum absoluten Inhalt

Position in Scrollbox relativ zum absoluten Inhalt

Offene Frage von "Bjoerk"
Ein Thema von superjojo · begonnen am 8. Feb 2014 · letzter Beitrag vom 8. Feb 2014
Antwort Antwort
superjojo

Registriert seit: 10. Jan 2014
16 Beiträge
 
#1

Position in Scrollbox relativ zum absoluten Inhalt

  Alt 8. Feb 2014, 10:47
Hallo ich bin an einem Leveleditor für ein selbstgebasteltes jump'n'run.
Man kann in dem Leveleditor irgendwo in eine scrollbox reinklicken, die Position wird sich gemerkt und ein Quelltext generiert, der nachher im richtigen Spiel genau an der Stelle das Objekt erstellt.

Das Problem:

Wenn die Gesamt-map größer ist, als die Scrollbox werden die Positionen in der scrollbox immer relativ zur oberen-linken Ecke der scrollbox gespeichert (auch wenn man z.B. ganz runtergescrollt hat), und nicht relativ zur obersten-linkesten Position des Inhalts, der in dieser scrollbox existiert.
Wenn nun später das Objekt an der gespeicherten Stelle erzeugt wird, wird es nun logischerweise relativ zur linken oberen Ecke der scrollbox erstellt, unhabhängig wie die Position der scrollbalken (also quasi "wo man sich in der scrollbox aufgehalten hat") vorher war. Somit werden alle Objekte in den oberen linken teil der Map geklatscht, auch wenn sie da gar nicht hinsollen.

Schön wäre also, wenn ich die Position eines Objektes in der Scollbox relativ zum Inhalt der Scrollbox herausfinden könnte.


Zum besseren Verständnis hänge ich mal zwei Bilder an.
Miniaturansicht angehängter Grafiken
1.jpg   2.jpg  

Geändert von superjojo ( 8. Feb 2014 um 10:52 Uhr) Grund: Habe das Bild verständlicher gestaltet
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.243 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Position in Scrollbox relativ zum absoluten Inhalt

  Alt 8. Feb 2014, 11:45
Wenn ich Dich richtig verstehe müsstest Du ScrollBarHorz.Position zu X addieren und für Y natürlich analog.

Die VCL ist für solche Spieleentwicklungen aber nicht unbedingt erste Wahl. Sie ist eben für andere Anwendungsfälle und Abläufe vorgesehen.
Allerdings weiß ich auch nicht, was man dafür am ehesten empfehlen sollte.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.380 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Position in Scrollbox relativ zum absoluten Inhalt

  Alt 8. Feb 2014, 12:18
Ich weiß nicht ob es das ist was du suchst?

Delphi-Quellcode:
function ClientRangeRect(Control: TControl): TRect;
var
  O: TPoint;
begin
  // Control = Client, Parent = ScrollBox, Result in Client-Koordinaten;
  O := Control.ClientToParent(Point(0, 0), Control.Parent);
  Result := Control.Parent.ClientRect;
  Result.Top := Result.Top - O.Y;
  Result.Left := Result.Left - O.X;
  Result.Bottom := Result.Bottom - O.Y;
  Result.Right := Result.Right - O.X;
  Result.Bottom := Min(Result.Bottom, Control.ClientHeight);
  Result.Right := Min(Result.Right, Control.ClientWidth);
end;
  Mit Zitat antworten Zitat
superjojo

Registriert seit: 10. Jan 2014
16 Beiträge
 
#4

AW: Position in Scrollbox relativ zum absoluten Inhalt

  Alt 8. Feb 2014, 12:41
Vielen Dank für die Antworten schon mal

@stahli:
Die Idee hatte ich auch schon, aber dann fiel mir ein, dass die Position der scrollbar ja auch relativ zur größe des Inhalts der scrollbox ist.
Beispiel:
Wenn der Inhalt 10.000 Pixel ist, dann müsste man bei einer Scrollbarposition von 10 genau 1.000 Pixel "draufrechnen".
Wenn der Inhalt nur 100 Pixel sind, dann müsste man bei einer Scrollbarposition von 10 nur noch 10 Pixel "draufrechnen".



@Bjoerk
Ich bin ein zimlicher Anfänger in Delphi und verstehe nicht ganz was dein Quelltext bewierkt, könntst du das vllt. noch mal für einen Laien erklären?
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.243 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Position in Scrollbox relativ zum absoluten Inhalt

  Alt 8. Feb 2014, 13:11
Mit der Position sollte das eigentlich gehen, da die Pixel-Verschiebung von 0 an dort angegeben wird.
Probiere es einfach mal aus.

Mit Bjoerks Funktion kann man die Position eines Controls in Bezug zu einem übergeordneten ermitteln.

Ich habe aber noch nicht verstanden, ob Du Controls auf die Scrollbox setzt oder eher zeichnest oder beides?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.380 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Position in Scrollbox relativ zum absoluten Inhalt

  Alt 8. Feb 2014, 13:52
Wenn du z.B. eine Paintbox (wäre das Control) in einer Scrollbox (wäre das Parent) hast, und das Width und/oder Heigh der Paintbox größer sind als die Abmessungen der Scrollbox (erst dann bekommst du ja Scrollbars angezeigt) kann man dieser Function das sichtbare Rect in PaintBoxKoordinaten ermitteln.
  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 06:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf