Essaye autre chose, ce n'est pas très logique de dessiner directement dans le canevas d'un fiche. Ceci explique le plupart de tes problèmes.
Place un TImage dans le fond de ta fiche ( en arrière plan ). Utilise alors Image1.Canvas plutôt que Form1.Canvas. L'avantage de cette méthode est que l'image garde en mémoire le dessin effectué. Dans le cas d'un déplacament de composant elle placera toute seule la partie manquante plutôt qu'un rectangle gris.
Dans ce cas il n'est pas non plus utile de dessiner à chaque OnPaint de la fiche pour la même raison : le TImage conserve l'image dessinée.
---

Nono du Moulin

---
-------------------------------
Réponse au message :
-------------------------------
En fait, c'est bizarre : il y a de labels qui disparaissent bien et d'autre non :
Fond de la fiche : Form1.Canvas.Draw(0,0,BitMap);
J'ai 1 checkBox, 2 boutons radio et 2 labels :
Quand on clique sur un bouton : je les met tous les 5 en Visible:=False;
puis je fait un rectangle avec le fichier BMP regle.bmp:
Regle.LoadFromFile('regle1.bmp');
Form1.Canvas.Brush.Bitmap := Regle;
Form1.Canvas.FillRect(Rect(0,0,300,200));
Et la, ca me fait des gros rectangles gris à la place de la checkbox, des boutons radio et des labels.
Encore plus birrare, quand je met les label en visible:=True, et que je fait le rectangle par dessus, le rectangle ecrasse les labels??? Et meme si je met CheckBox1.Left:=400 par exemple, il me la déplace bien, mais il laisse quand mme un trou?!?
J'espère que tu pourras m'aider