AGB  ·  Datenschutz  ·  Impressum  







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

Seltsames Werteverhalten

Ein Thema von Delbor · begonnen am 29. Jan 2019 · letzter Beitrag vom 2. Feb 2019
 
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.196 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Seltsames Werteverhalten

  Alt 2. Feb 2019, 10:44
Hi Dennis07

Zitat:
"ScBxRadioButtons" und was ist "TRadioButtonsFrame"?
ScBxRadioButtons ist eine Scrollbox, die auf dem TRadioButtonsFrame - einem TFrame - liegt und die die einzelnen Radiobuttons enthält. Klar, eine Radiogroup wäre einfacher, aber nach meinem Empfinden optisch nicht so das Gelbe vom Ei.

Ich wollte aufzeigen, wie die Radiobuttons entstehen - beide Radiobutton-Guppen entstehen aus dem selben Code in der Prozedure TRadioButtonsFrame.RadioButtonPosition2.
Auf der Form habe ich 2 Frameinstanzen, die diese Prozedur geerbt haben und die nun aus dem MainformCreate heraus aufgerufen werden.
Die beiden Instanzen unterscheiden sich deutlich in der Grösse, was aus der Reportliste ganz am Schluss des Beitrags ersichtlich ist.
Diese Liste verrät aber auch, dass sich die Leftwerte im kleineren Container ab dem dritten Element ändern.

Beim Durchlesen sehe ich: etwas verwirrend dürfte die lokale Variable LHeight sein - die definiert nicht die Höhe des i-ten Elements, sondern dessen Top, der sich aus der Höhe der vorangegangenen Elemente ergibt.

Unglücklich ist auch dies:
LHeight := (i * FRadioButtonList.Items[i].Height) + ScBxRadioButtons.ClientHeight div 4; Auch hier wird nicht die Höhe, sondern der Top der Elemente festgelegt (Beim erste Durchlauf 0 x die Höhe).

Inzwischen umgehe(?) ich das Problem, indem ich noch vor Eintritt in die Schleife einen Wert festlege:
ScBX := ScBxRadioButtons.ClientWidth div 2; ScBx ist somit die Mitte der Scrollbox.
Left berechne ich dann in der Schleife:
LLeft := ScBX - (FRadioButtonList.Items[i].Width div 2); Aber - und das ist wahrscheinlich das Wesentliche - der erste Topwert berechnet sich so:
LHeight := (i * FRadioButtonList.Items[i].Height) + ScBxRadioButtons.ClientHeight div 6; Damit werden alle 4 Radiobuttons höher platziert. Und das bringt mich auf die Idee, dass die Scrollbox nach dem 2. Element eine vertikale Scrollbar eingeblendet und so den Clientwith verändert hat.


Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor ( 2. Feb 2019 um 10:49 Uhr)
  Mit Zitat antworten Zitat
 


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 20:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz