Soit un TPanel aligné à alLeft sur une fiche, et un autre TPanel aligné à alClient.
Soit une TScrollbox posée sur ce second panel, alignée à alClient aussi.
Soit un TPanel posé sur cette scrollbox, aligné à alNone et dont la taille s'adapte au TImage qu'il contient.

Jusque là vous suivez ?
Code text : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Fiche
 |_PanelLeft  |_PanelClient
                     |_ScrollBox
                           |_Panel4Images
                                  |_TImage

Je m'attends à ce que la scrollbox fasse apparaître ses scrollbars si je charge une grande image, ce qui est le cas si je lui ai défini AutoSize à True et Align à alClient, ça tombe bien c'est le cas.

Mais comment expliquer, alors, que le Panel4Images reste obstinément tanqué à 0,0 (propriétés définies dans l'inspecteur d'objet) puisque j'ai attaché ça à la scrollbox :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.scbxResize(Sender: TObject);
begin
  // 2 lignes utiles si autoSize à False
  scbx.Left := (pnlCenter.Width  - pnl4Images.Width)  div 2;
  scbx.Top  := (pnlCenter.Height - pnl4Images.Height) div 2;
 
  pnl4images.Left := (scbx.Width - pnl4images.Width)  div 2;
  pnl4images.Top  := (scbx.Height- pnl4images.Height) div 2;
 
  memo.lines.Add(Format('%4d %4d',[pnl4images.Width,pnl4images.Height])); //
  memo.lines.Add(Format('%4d %4d',[scbx.Width,scbx.Height])); //
  memo.lines.Add(Format('%4d %4d',[scbx.ClientWidth,scbx.ClientHeight])); //
  memo.lines.Add(''); //
  // ouverture 800x600 et resize form + grande que scrollbox --> 800 600 - 840 680 - 840 680
  // mais le pnl4images reste à 0 0 -- comment c'est possible ?
end;
parce que chez moi, (840 - 800) div 2 ça fait 20, pour la largeur...

Car oui, j'aurais aimé que ce Panel4Images soir centré gauche-droite et haut-bas quand il est plus petit que son container, mais makache walou...

Et ça fait 4 heures que je suis là-dessus, à essayer dans tous les sens les options d'alignement et d'autosize de la scrollbox, avec et sans le PanelClient, en forçant les dimensions dans le code ou pas, bref, encore un truc de malade, je sens.

À moins que quelqu'un ait une idée (0 pointé pour google sur ce coup-là) ? Elle mérite bien ça, Lena,

Un dernier mot : en passant l'AutoSize de la scrollbox à False, ça centre le pnl4Images avec les petites images, cool, mais c'est un gros pâté avec les grandes :
Nom : défaut_centrage.png
Affichages : 224
Taille : 91,6 Ko

On voit bien que les ascenseurs ne permettront pas de parcourir toute l'image : parties gauche et supérieure hors d'atteinte
Que faire pour y arriver ?