Panel Bouton

dubois77 689 Messages postés jeudi 17 avril 2008Date d'inscription 9 mars 2018 Dernière intervention - 9 janv. 2017 à 11:34 - Dernière réponse : dubois77 689 Messages postés jeudi 17 avril 2008Date d'inscription 9 mars 2018 Dernière intervention
- 14 janv. 2017 à 18:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

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

Afficher la suite 
korgis 411 Messages postés samedi 17 mai 2003Date d'inscription 16 mars 2018 Dernière intervention > Caribensila 2671 Messages postés jeudi 15 janvier 2004Date d'inscription 18 janvier 2018 Dernière intervention - 14 janv. 2017 à 13:44
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"...
Caribensila 2671 Messages postés jeudi 15 janvier 2004Date d'inscription 18 janvier 2018 Dernière intervention > korgis 411 Messages postés samedi 17 mai 2003Date d'inscription 16 mars 2018 Dernière intervention - 14 janv. 2017 à 17:31
Salut Japee,

C'était juste pour info...

Mais il ne faut pas trop se laisser impressionner par "absolute" dont le résultat n'est qu'un pointeur.
Delphi cache vraiment bien tout ce qui se rapporte aux pointeurs tant il est vrai que
les pointeurs font peur (surtout aux dames :p ).

Perso, j'emploie "absolute" surtout dans le cas décrit ici, pour créer une variable placée à la même adresse qu'une autre.
Et lorsque je bricole vraiment les pointeurs, je préfère le faire de façon transparente.
Voici, par exemple, ce que donnerait la même routine écrite avec des pointeurs et qui démontre la simplicité de "absolute" :

procedure TForm1.MouseBP;
type
pPanel = ^TPanel;
var
pMonPanel : pPanel;
begin
pMonPanel := @Sender; // affecte l'adresse de Sender à pMonPanel
if pMonPanel^.BevelOuter=bvRaised
then pMonPanel^.BevelOuter := bvLowered
else pMonPanel^.BevelOuter := bvRaised;
end;


De toute façon, tout bien pesé, je n'utilise les pointeurs qu'avec les Bitmap, pour des raisons d'optimisation...
dubois77 689 Messages postés jeudi 17 avril 2008Date d'inscription 9 mars 2018 Dernière intervention > Caribensila 2671 Messages postés jeudi 15 janvier 2004Date d'inscription 18 janvier 2018 Dernière intervention - 14 janv. 2017 à 17:52
Décidément mon petit Panel Bouton à réveiller les maîtres du site (c'est pas de l'humour !) :
Korgis : With Sender as Tpanel
YanB : Surcharge Tpanel
Caribensila : Tpanel Absolute Sender
Caribensila : pMonPanel := @sender
ça devient un cours magistral !
Perso, j'ai appris des choses, comme quoi à tout age ....
korgis 411 Messages postés samedi 17 mai 2003Date d'inscription 16 mars 2018 Dernière intervention > Caribensila 2671 Messages postés jeudi 15 janvier 2004Date d'inscription 18 janvier 2018 Dernière intervention - 14 janv. 2017 à 18:50
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 !
dubois77 689 Messages postés jeudi 17 avril 2008Date d'inscription 9 mars 2018 Dernière intervention > korgis 411 Messages postés samedi 17 mai 2003Date d'inscription 16 mars 2018 Dernière intervention - 14 janv. 2017 à 18:54
apothéose pour conclure !
Commenter la réponse de dubois77

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.