Recherche
1 connecté

  composants : Distinguer lorsque l'on est en mode exécution / mode conception

CREATION DE COMPOSANTS DELPHI
Distinguer le mode exécution et le mode conception

dernière mise à jour le : dimanche 04 mars 2001

Retour au sommaire.
Chapitre précédent
Chapitre suivant

Mode exécution ou mode conception ?

Lorsque vous créez des composants, à certains moments vous voulez distinguer si vous êtes en train d'utiliser le composant en tant que programmeur (par exemple, vous placez le composant sur la fiche) ou si vous êtes en mode exécution (le programme a été compilé et lancé)

Pour ce faire, vous allez utiliser :

  if (csDesigning in ComponentState) then // si on est en mode conception
      ...//action souhaitée si on est en mode conception
  else 
      ...// action souhaitée si on est en mode exécution

 


Exemple :

Dans le source d'un de vos composants, surchargez la méthode Create en mettant entre public et published :

public
   Constructor Create(AOwner:TComponent); override;
published

et ajoutez dans la partie implémentation :

constructor TTestcsDesigningBitBtn.Create;
begin
  inherited;
  if (csDesigning in ComponentState) then // si on est en mode conception
      ShowMessage('bonjour à toi programmateur Delphi')
  else ShowMessage('mode exécution');
end;

Attention, pour tester, il est indispensable :

  • De retirer de la form tout composant de ce type placé avant cet ajout
  • De compiler le paquet contenant ce composant en cliquant sur le bouton Compiler de cette fenêtre :

  • Placez alors le composant sur la Form et vous verrez s'afficher
    .

    Normal, puisque vous êtes en mode conception.
  • Lancez le programme (F9) et vous verrez apparaître :

 


Code complet de l'exemple :

unit TestcsDesigningBitBtn;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons;

type
  TTestcsDesigningBitBtn = class(TBitBtn)
  private
    { Déclarations privées }
  protected
    { Déclarations protégées }
  public
     Constructor Create(AOwner:TComponent); override;
  published

  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Perso', [TTestcsDesigningBitBtn]);
end;


{ TTestcsDesigningBitBtn }

constructor TTestcsDesigningBitBtn.Create;
begin
  inherited;
  if (csDesigning in ComponentState) then // si on est en mode conception
      ShowMessage('bonjour à toi programmateur Delphi')
  else ShowMessage('mode exécution');
end;



end.

Retour au sommaire.
Chapitre suivant