AGB  ·  Datenschutz  ·  Impressum  







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

Hilfe - wie echte ScrollBox Breite ermitteln?

Ein Thema von Assertor · begonnen am 6. Okt 2007 · letzter Beitrag vom 30. Sep 2008
Antwort Antwort
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#1

Hilfe - wie echte ScrollBox Breite ermitteln?

  Alt 6. Okt 2007, 13:08
Hi,

ich steh grad mal wieder auf dem Schlauch. Ich habe eine eigene Komponente, die etwas rumzeichnet und dafür ClientRect verwendet.

Liegt die nun auf einer (Tnt)ScrollBox gibt es Probleme:
Der Inhalt wird abgeschnitten, da ClientRect ja nur die tatsächliche Größe des Elements bekommt.

Aber bei einer Scrollbox mit Bars ist ja der interne Bereich u.U. viel größer.

Frage: Wie ermittel ich das tatsächliche ClientRect einer ScrollBox (sozusagen das interne Fenster)?

Gruß winkel79
Frederik
  Mit Zitat antworten Zitat
Torsten Bäcker

Registriert seit: 4. Okt 2007
4 Beiträge
 
#2

Re: Hilfe - wie echte ScrollBox Breite ermitteln?

  Alt 6. Okt 2007, 13:20
Was ir auf Anhieb einfällt:

Delphi-Quellcode:
  if Scrollbox1.HorzScrollBar.IsScrollBarVisible then
    BoxWidth := ScrollBox1.HorzScrollBar.Range
  else
    BoxWidth := ScrollBox1.Width;
Eventuell noch um die Breite des Rahmens korrigieren.

Gruß
Torsten
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#3

Re: Hilfe - wie echte ScrollBox Breite ermitteln?

  Alt 6. Okt 2007, 13:24
Hi Torsten,

danke für die schnelle Antwort.

Aber wie mache ich das aus einer eigenen Komponent, die von TCustomControl ableitet? Die weiß ja nicht, worauf Sie liegt.

Ich könnte höchstens auf den Parent Type prüfen und das mittels TypeCast auswerten...
Frederik
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#4

Re: Hilfe - wie echte ScrollBox Breite ermitteln?

  Alt 6. Okt 2007, 16:57
Hallo,

so, das mit dem TypeCast geht ganz gut. Nur noch ein Problem:

Zitat von Torsten Bäcker:
Eventuell noch um die Breite des Rahmens korrigieren.
Und wie? Wo kann ich den ermitteln?

HorzScrollBar.Size oder HorzScrollBar.Margins gibt immer 0 zurück (obwohl IsScrollBarVisible true ist).

Gruß winkel79
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#5

Re: Hilfe - wie echte ScrollBox Breite ermitteln?

  Alt 6. Okt 2007, 17:06
Evtl. hilft GetSystemMetrics mit den Parametern SM_CXHSCROLL und Anverwandten.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#6

Re: Hilfe - wie echte ScrollBox Breite ermitteln?

  Alt 6. Okt 2007, 17:23
Danke für die hilfreichen Antworten - ein Problem weniger

Ich mach es jetzt einfach ohne die Margins, es scheint so zu gehen. Die TntScrollbox liefert nur den tatsächlichen inneren Bereich.

Also keine Notwendigkeit, dies zu prüfen.

Gruß winkel79
Frederik
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Hilfe - wie echte ScrollBox Breite ermitteln?

  Alt 7. Okt 2007, 19:21
Du kannst auch noch in der Paint Methode der Scrollbox per ClipRect von Canvas das Sichtbare Fenster
ermitteln. Musst alledins erst Clipping auf True setzten.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Hilfe - wie echte ScrollBox Breite ermitteln?

  Alt 30. Sep 2008, 11:51
Zitat von Assertor:
Ich mach es jetzt einfach ohne die Margins, es scheint so zu gehen. Die TntScrollbox liefert nur den tatsächlichen inneren Bereich.
@Assertor
Macht es Dir viel aus, dass mal genauer zu erklären. Offenbar hast Du es ja hinbekommen.

Zitat von DeddyH:
Evtl. hilft GetSystemMetrics mit den Parametern SM_CXHSCROLL und Anverwandten.
@DeddyH
Das scheint es auch nicht zu sein.

Ich stehe vor folgendem Problem:
Ich möchte gern ein Bitmap in eine ScrollBox laden. Und zwar so, dass der Benutzer auswählen kann, ob das Bild (proportional) die Breite der ScrollBox oder deren Höhe haben soll. Es klappt bei mir nicht. Ich möchte maximal eine haben; entweder horizontal oder vertikal oder gar keine, falls das Verhältnis des Bildes exakt dem der ScrollBox entspricht. Ich bekomme immer beide ScrollBars zu sehen.
Ich habe mal den QuellCode angefügt. Vielleicht springt ja jemandem der Fehler sofort ins Auge.

Gruß, Alex
Angehängte Dateien
Dateityp: zip scrollbox_p_751.zip (1,9 KB, 9x aufgerufen)
Alex Winzer
  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 17:12 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