Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Checkbox Eigenschaft "Top" ändern / Komponente ableiten (https://www.delphipraxis.net/178342-checkbox-eigenschaft-top-aendern-komponente-ableiten.html)

Grisu2000 2. Jan 2014 23:22

Checkbox Eigenschaft "Top" ändern / Komponente ableiten
 
Hallo,
die Eigenschaft Top einer Checkbox ist ein Integer-Wert. Ist es möglich diesen Wert auf longint zu ändern?

Folgendes Problem:
Ich habe auf einem Scrollbox Images (TImages) und jeweils eine Checkbox (Tcheckbox) zur Auswahl zugeordnet.
Diese werden zur Laufzeit in Abhängigkeit der Bilderzahl erzeugt. Funktioniert auch alles soweit, solange der Wert für die Eigenschaft "Top" bei den Checkboxen unter 32000 bleibt. Bei den Images dagegen kann die Eigenschaft "Top" größere Werte annehmen und diese werden daher auch korrekt dargestellt.

Kann ich hierzu die Komponente TCheckbox ableiten und dem Top einen erweiterten Bereich zuordnen? Und wenn ja, wie sieht sowas aus?

Ich nutze Delphi7.

Schon mal Danke im voraus

Gruß
Hanns-Dieter

nahpets 3. Jan 2014 00:15

AW: Checkbox Eigenschaft "Top" ändern / Komponente ableiten
 
TCheckBox und TImage sind Nachfahren von TControl und erben von dort die Eigenschaft Top, die als Integer definiert ist. Es gibt dort daher keine Unterscheidung in Bezug auf den Typ von Top.

Sofern die Checkboxen untereinander liegen sollen, könnte das Setzen von Align := alTop helfen. Die Komponenten ordnen sich dann von alleine untereinander an.

Wobei am Rande, nur aus Neugier: 32000 als Top, dies hieße ja über 1200 Checkboxen in der Scrollbox. Wie kann man damit noch sinnvoll arbeiten?

Bjoerk 3. Jan 2014 00:17

AW: Checkbox Eigenschaft "Top" ändern / Komponente ableiten
 
TCheckBox erbt die Eigenschaft Top von TControl. Die kann man nicht verändern. Ist meines Wissen in D7 aber bereits ein 32 bit integer, also bis etwa 2^31.

Grisu2000 3. Jan 2014 03:26

AW: Checkbox Eigenschaft "Top" ändern / Komponente ableiten
 
Danke schon mal für die Antwort.
Es sind tatsächlich über 1200 Checkboxen (je nach Anzahl Bilder im Verzeichnis durchaus auch noch mehr). Es werden alle Bilder als Vorschau mit 200x200 Pixel dargestellt, und am Rand jedes Bildes die Checkboxen zur Auswahlmöglichkeit für die Bilder.
Da geht das Arbeiten damit eigentlich ganz gut.
Die Bilder stehen nicht alle untereinander, sonder je nach Bildschirmbreite sind ca. 6 bis 8 Bilder (und damit Checkboxen) nebeneinander.

Wenn man den Wert nicht ändern kann, muss ich mir was anderes überlegen, um eine Markierung für ausgewählte Bilder zu bekommen.
Kann man Bilder farbig umranden?

Gruß
Hanns-Dieter

himitsu 3. Jan 2014 04:17

AW: Checkbox Eigenschaft "Top" ändern / Komponente ableiten
 
Es sind dennoch mindestens 30 Bildschirme in der Höhe.

Nimm besser einen Grid ListView und mach es ordentlich.

Dort hast du dann auch Multiselekt, sortieren, filtern usw.

nahpets 3. Jan 2014 16:57

AW: Checkbox Eigenschaft "Top" ändern / Komponente ableiten
 
Das "Problem" liegt nicht am Datentyp von Top bei Checkboxen. Folgender (erstmal sinnfreier) Quelltext funktioniert unter Delphi 7:
Delphi-Quellcode:
  CheckBox1.Top    := MaxInt;
  CheckBox1.Caption := Format('Top: %d - MaxInt: %d',[CheckBox1.Top,MaxInt]);
  ShowMessage(CheckBox1.Caption);
Heraus kommt aber: Top: 32767 - MaxInt: 2147483647
D. H.: Der Typ von Top ist schon ok, aber "irgendwer" ist der Meinung, dass 32767 ausreichend sein dürfte.
Habe mir nicht die Mühe gemacht in den Tiefen der Delphisourcen oder von Windows nachzuforschen, wo diese "Einschränkung" vergraben ist.

Der "Effekt" tritt auch bei Buttons auf, weitere Komponenten hab' ich nicht ausprobert.

himitsu 3. Jan 2014 17:04

AW: Checkbox Eigenschaft "Top" ändern / Komponente ableiten
 
Man könnte jetzt natürlich nachsehn, was .Top intern nutzt.

http://msdn.microsoft.com/en-us/libr.../ms632631.aspx


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