AGB  ·  Datenschutz  ·  Impressum  







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

TScrollBox zentrieren

Ein Thema von SnuffMaster23 · begonnen am 31. Jul 2006 · letzter Beitrag vom 31. Jul 2006
Antwort Antwort
Benutzerbild von SnuffMaster23
SnuffMaster23

Registriert seit: 13. Feb 2006
Ort: Kempten
253 Beiträge
 
#1

TScrollBox zentrieren

  Alt 31. Jul 2006, 10:23
Wie kann man eigentlich eine ScrollBox zentrieren?
Ich hab ein Image drin das in der linken oberen Ecke hängt und möglicherweise viel größer als die Scrollbox ist.
In diesem Fall soll man erstmal die Mitte des Images sehen.

Folgendes funktioniert nicht:
Delphi-Quellcode:
ScrollBox1.HorzScrollBar.Position := (ScrollBox1.HorzScrollBar.Range - ScrollBox1.HorzScrollBar.ThumbSize) div 2;
ScrollBox1.VertScrollBar.Position := (ScrollBox1.VertScrollBar.Range - ScrollBox1.VertScrollBar.ThumbSize) div 2;
Das kommt aufs gleiche raus wie:
Delphi-Quellcode:
ScrollBox1.HorzScrollBar.Position := ScrollBox1.HorzScrollBar.Range div 2;
ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Range div 2;
Ich hab sogar ein Application.ProcessMessages davor damit die ScrollBox bemerken kann dass sich ThumbSize geändert hat, bringt aber auch nix.
Zur Entwurszeit ist ThumbSize = 0, ich nehme an damit er sich dynamisch an den Inhalt anpasst. Aber ich muss doch die tatsächliche Größe zur Laufzeit auch kriegen.
"Conspiracy is the poor man's mapping of the world" - Fredric Jameson
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: TScrollBox zentrieren

  Alt 31. Jul 2006, 10:35
Hi!

Welchen Wert hat Thumbsize vor Ausführung dieser Codestelle?


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von SnuffMaster23
SnuffMaster23

Registriert seit: 13. Feb 2006
Ort: Kempten
253 Beiträge
 
#3

Re: TScrollBox zentrieren

  Alt 31. Jul 2006, 10:39
Vor und nach Application.Processmessages ist es 0.
"Conspiracy is the poor man's mapping of the world" - Fredric Jameson
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: TScrollBox zentrieren

  Alt 31. Jul 2006, 10:49
Hallo SnuffMaster23,

versuche es einmal mit diesem Code:

Delphi-Quellcode:
with ScrollBox1.HorzScrollBar do
  Position := (Range - ScrollBox1.ClientWidth) div 2;

with ScrollBox1.VertScrollBar do
  Position := (Range - ScrollBox1.ClientHeight) div 2;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von SnuffMaster23
SnuffMaster23

Registriert seit: 13. Feb 2006
Ort: Kempten
253 Beiträge
 
#5

Re: TScrollBox zentrieren

  Alt 31. Jul 2006, 10:57
TScrollBox kennt kein ClientWidth. Da bin ich auch schon drauf gekommen. Man könnte es ganz umständlich machen mit
ScrollBox1.HorzScrollbar.Range - ScrollBox1.Height - ScrollBox1.VertScrollbar.Size * ord(ScrollBox1.VertScrollbar.Visible) Aber das muss doch auch einfacher gehen.

//Edit: Das geht auch nicht, da Visible nur angibt ob die Scrollbar überhaupt angezeigt wird falls nötig, nicht ob sie gerade angezeigt wird.
Ich glaube ich verzichte einfach auf die paar Pixel und zeig halt nicht exakt die Mitte.

//Edit²: Ich habs jetzt so, das funktioniert brauchbar:  ScrollBox1.HorzScrollBar.Position := (ScrollBox1.HorzScrollBar.Range - ScrollBox1.Width) div 2;
"Conspiracy is the poor man's mapping of the world" - Fredric Jameson
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: TScrollBox zentrieren

  Alt 31. Jul 2006, 11:05
Zitat von SnuffMaster23:
TScrollBox kennt kein ClientWidth.
Alle von TControl abgeleiteten Komponenten besitzen die public-Eigenschaften Client Width und ClientHeight, also auch TScrollBox. Der von mir gepostete Code funktioniert unter Delphi 6 einwandfrei. Was machst du anders?

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von SnuffMaster23
SnuffMaster23

Registriert seit: 13. Feb 2006
Ort: Kempten
253 Beiträge
 
#7

Re: TScrollBox zentrieren

  Alt 31. Jul 2006, 11:10
Ich hab halt im Objektinspektor und der OH nachgeschaut, da steht kein ClientWidth.

Zitat von Die OH:
Hierarchy
  • System.TObject
    Classes.TPersistent
Ich hab BDS 2005.
"Conspiracy is the poor man's mapping of the world" - Fredric Jameson
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

Re: TScrollBox zentrieren

  Alt 31. Jul 2006, 11:15
Der Objektinspektor zeigt nur published-Eigenschaften an, keine public-Eigenschaften. Und die Hilfe in BDS 2005 ist - freundlich formuliert - unvollständig.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von SnuffMaster23
SnuffMaster23

Registriert seit: 13. Feb 2006
Ort: Kempten
253 Beiträge
 
#9

Re: TScrollBox zentrieren

  Alt 31. Jul 2006, 11:59
Dass die 2005er OH nix ist weiß ich
Ich seh grad, ich hab in der OH bei TControlScrollBar und nicht bei TScrollBox nachgeguckt (war grad noch auf)

Okay, mit ClientWidth/-Height funktionierts auch, aber auf die halbe ScrollBar-Breite/-Höhe kommts eigntlich nicht an.

Danke dir jedenfalls!
"Conspiracy is the poor man's mapping of the world" - Fredric Jameson
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:16 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