Panel Bouton

Signaler
Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
-
Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/101802-panel-bouton

Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
13
Bonjour à tous,

"(Sender as TPanel)." ou "TPanel(Sender)." me font penser au truc bien pratique qu'est "absolute".

"absolute" permet de créer une variable placée à la même adresse qu'une autre variable déjà existante. Comme c'est une histoire de pointeur, c'est très puissant et très optimisé.

Dans le code de notre ami, ça pourrait s'utiliser comme ceci :

procedure TForm1.MouseBP;
var
MonPanel : TPanel absolute Sender;
begin
if MonPanel.BevelOuter=bvRaised
then MonPanel.BevelOuter := bvLowered
else MonPanel.BevelOuter := bvRaised;
end;
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
15 >
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019

Oui, Cari, j'ai été un peu pointilleux sur ce coup.
Tu as bien fait de mettre les choses au point.
Bel éloge de la transparence en tout cas, du moins appliquée à Delphi.
N'ayons donc plus peur de bricoler, voire de tripoter les pointeurs, même si Delphi dans sa grande bonté nous en dispense le plus souvent.
Par ailleurs, après réflexion, pourquoi les cochons n'auraient-ils pas droit à un peu de confiture, de temps en temps (et pas trop souvent).
Ça les change un peu de la tarte aux concombres.

Dubois, c'était une petit Panel-Bouton magique :-P

procedure TForm1.MagicalPanelBouton1Click(Sender: TObject);
begin
  if WakeUp(MastersOfDelphiFr) then
    ShowMessage('yyyeeeeessss!!!')
end;

Y'a pas d'âge pour apprendre, et avec Delphi, on n'a pas fini !
Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
11 >
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019

apothéose pour conclure !
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
15 >
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019

Salut Cari,

Tu lui as coupé le sifflet à Dubois : il dit plus rien, lol.
Ça fonctionne, c'est clair.
Mais, à part vouloir utiliser une variable en plus, il est dommage de réserver l'usage de la directive à ce contexte, non ? (c'est de la confiture pour les cochons)
Par contre (de mémoire), f0xi, en son temps, nous avait montré l'intérêt de l'utilisation de "absolute" pour passer d'un "array of" à un "record", par exemple, et ce genre de choses...
Là, ça déchire.
Quoi qu'il en soit, tu m'as fait remémorer l'usage de cette directive finalement peu utilisée et dont le maniement est délicat, mais pas plus dans le fond que "TPanel(Sender)" ou "Sender as TPanel" si l'on n'a pas pris la précaution de tester par "if Sender is TPanel"...
Afficher les 12 commentaires