Propriété Left limité à 32767 [Fermé]

Signaler
Messages postés
63
Date d'inscription
dimanche 16 octobre 2005
Statut
Membre
Dernière intervention
13 novembre 2009
-
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
-
Bonsoir,

Celà peut paraître singulier, mais dans un Scrollbox je place plein de boutons, malheureusement je manque de place ... car la propriété Left est limitée à 32767. Y'a-t-il un moyen de contourner cette limite ... 
Je pense créer un TMonButton dérivé de TButton en surchargeant la propriété Left, je sais surcharger les procédures, mais peut-on surcharger la propriété Left, enfin changer son type ... à savoir passer de Int à LongInt serait amplement suffisant.   Je sais pas comment on s'y prend.
Mais peut-être y a-t-il une autre solution ... je suis preneur. 
Merci d'avance.

Jean-Michel

3 réponses

Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
13
32000 pixels et c'est pas suffisant ?
tu peux nous montrer un screen ou il fait 2go le .jpg ? ^^
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
30
nan mais a un moment donner faut arreter d'abuser avec ça.

l'utilisateur vas etre perdus dans tout ces boutons a la con.

si on admet que tes boutons font 100 de large, sans espacement ça fait 327 boutons!
c'est du n'importe quoi et en matiere d'ergonomie y'a mieux!

tu peu toujours utiliser une ComboBox ou une ListBox pour gerer ton truc.

Sinon la propriété Left est dependante de TControl (classe de base) et donc c'est TControl qu'il faudrait deriver.
mais le 32767 est la limitation de la zone de dessin. on ne peu aller au dela de l'interval -32768..32767 ... ce qui fait quand même 4 294 967 296 pixels en tout  (limite du LongWord)

donc une zone de dessin equivalente a (en 96ppi : resolution ecran standard) :
17.339x17.339 metres (300m²) 
 961 pouces de diagonale
3 276,8 ecran 1280x1024
qui prend 16 384Mo (16Go) au format RGBA 32bits.

voila pourquoi on ne peu pas modifier cela
voila pourquoi il est inutile de declarer un scanline superieur a [0.65535] ...
voila pourquoi photoshop necessite des PC aussi puissant
voila pourquoi Left et Top ne peuvent depasser -32768..32767

alors pourquoi Left et Top ne sont pas declarer plutot en Word ou SmallInt ...
because Integer est plus performant (puisque CPU 32bits).

Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
30
schema pour comprendre :