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 Hilfe - wie echte ScrollBox Breite ermitteln? (https://www.delphipraxis.net/100973-hilfe-wie-echte-scrollbox-breite-ermitteln.html)

Assertor 6. Okt 2007 12:08


Hilfe - wie echte ScrollBox Breite ermitteln?
 
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

Torsten Bäcker 6. Okt 2007 12:20

Re: Hilfe - wie echte ScrollBox Breite ermitteln?
 
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

Assertor 6. Okt 2007 12:24

Re: Hilfe - wie echte ScrollBox Breite ermitteln?
 
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...

Assertor 6. Okt 2007 15:57

Re: Hilfe - wie echte ScrollBox Breite ermitteln?
 
Hallo,

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

Zitat:

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

DeddyH 6. Okt 2007 16:06

Re: Hilfe - wie echte ScrollBox Breite ermitteln?
 
Evtl. hilft GetSystemMetrics mit den Parametern SM_CXHSCROLL und Anverwandten.

Assertor 6. Okt 2007 16:23

Re: Hilfe - wie echte ScrollBox Breite ermitteln?
 
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

mimi 7. Okt 2007 18:21

Re: Hilfe - wie echte ScrollBox Breite ermitteln?
 
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.

Schwedenbitter 30. Sep 2008 10:51

Re: Hilfe - wie echte ScrollBox Breite ermitteln?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

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:

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


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