Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Lire l'évènement d'un composant crée en "runtime mode " [ Système / Exécution ] (tayebrabehi)

samedi 16 février 2008 à 13:04:31 | Lire l'évènement d'un composant crée en "runtime mode "

tayebrabehi

Comment pourrai-je  lire l'évènement d'un composant crée en  'Runtime Mode' ?

Par exemple je veux créer  deux boutons et lire  le 'onclick' de chaque un

Merci .


samedi 16 février 2008 à 13:54:37 | Re : Lire l'évènement d'un composant crée en "runtime mode "

Caribensila

Membre Club
Réponse acceptée !

Salut,


interface

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Déclarations privées }
    procedure Maprocedure(Sender: TObject);
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Maprocedure(Sender: TObject);
  begin
  beep;
end;

procedure TForm1.FormCreate(Sender: TObject);
  var MonBouton : TButton;
  begin
  MonBouton := TButton.Create(self);
  MonBouton.Parent := self;
  MonBouton.OnClick := Maprocedure;
end;


samedi 16 février 2008 à 18:33:54 | Re : Lire l'évènement d'un composant crée en "runtime mode "

gege58

Membre Club
Bonjour,

Je complexifie la question précédente :

je veut créer un composant dynamiquement, lequel contient plusieurs composants, par exemple un TEdit, 1 TUpDown, ...

et donc Comment lire (et le traiter) le OnClick sur les composant internes ?

Merci.

gege58

samedi 16 février 2008 à 19:11:40 | Re : Lire l'évènement d'un composant crée en "runtime mode "

f0xi

Membre Club Administrateur CodeS-SourceS


exemple :

type
  TMonCompo = class(TComponent)
  private
    fEdit : TEdit;
    fUpDown : TUpDown;
    fOnEditClick : TNotifyEvent;
    fOnUpDownClick : TNotifyEvent;
  protected
    procedure DoEditClick(Sender: TObject); virtual;
    procedure DoUpDownClick(Sender: TObject); virtual;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property OnEditClick : TNotifyEvent read fOnEditClick write fOnEditClick;
    property OnUpDownClick : TNotifyEvent read fOnupDownClick write fOnUpDownClick;
  end;

{ TMonCompo }

constructor TMonCompo.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  fEdit := TEdit.Create(nil);
  with fEdit do
  begin
    //Parent := Self;
    //SetBounds(L, T, W, H);
    OnClick := DoEditClick;
  end;

  fUpDown := TUpDown.Create(nil);
  with fUpDown do
  begin
    //Parent := Self;
    //SetBounds(L, T, W, H);
    OnClick := DoUpDownClick;
  end;
end;

destructor TMonCompo.Destroy;
begin
  fUpDown.Free;
  fEdit.Free;
  inherited;
end;

procedure TMonCompo.DoEditClick(Sender: TObject);
begin
  { before code here }

  if Assigned(fOnEditClick) then
    fOnEditClick(Sender);

  { after code here }
end;

procedure TMonCompo.DoUpDownClick(Sender: TObject);
begin
  { before code here }

  if Assigned(fOnUpDownClick) then
    fOnUpDownClick(Sender);

  { after code here }
end;




deefsign.gif

samedi 16 février 2008 à 19:36:01 | Re : Lire l'évènement d'un composant crée en "runtime mode "

gege58

Membre Club
Ok,  merci beaucoup.

je vois bien maitenant comment faire dans le composant (en fait ça je l'avais trouvé dans un tuto), mais comment appeler ces événements depuis la form principale,  ma question était surtout à ce niveau  ?

Merci encore.

gege58

samedi 16 février 2008 à 19:55:54 | Re : Lire l'évènement d'un composant crée en "runtime mode "

f0xi

Membre Club Administrateur CodeS-SourceS

avec l'exemple que je t'ai donné :

MonCompo.OnEditClick(nil);
ou
MonCompo.OnUpDownClick(nil);

note la redirection des evenements dans la classe TMonCompo grace aux procedure protégée Do*Click



deefsign.gif

samedi 16 février 2008 à 20:38:53 | Re : Lire l'évènement d'un composant crée en "runtime mode "

gege58

Membre Club
En fait, j'ai mal posé ma question, quand on clique sur la composant global sur la form, je dois discriminer si on a cliqué sur l'un ou sur l'autre des 2 "sous-composants" et faire le traitement ad'hoc.

Comment modifier l'exemple de Caribensila dans mon cas, avec le composant global (sur lequel on va cliquer), et ses 2 sous-composants pour que je puisse avoir le bon traitement (OnEditClick ou OnUpDownClick) ?

gege58

dimanche 17 février 2008 à 04:17:00 | Re : Lire l'évènement d'un composant crée en "runtime mode "

f0xi

Membre Club Administrateur CodeS-SourceS

ben ça c'est le Edit et UpDown dans le compo qui transmette l'event (puisque assigné dans le compo).

donc dans l'exemple, si tu click sur le edit ou le updown, cela appel les procedures DoEditClick ou DoUpDownClick et donc tu n'as plus qu'a mettre du code de traitement dans les deux procedure, avant ou aprés la redirection de l'event (if assigned...)




deefsign.gif

dimanche 17 février 2008 à 12:54:09 | Re : Lire l'évènement d'un composant crée en "runtime mode "

gege58

Membre Club
Merci beaucoup, ça marche !

gege58

dimanche 17 février 2008 à 13:11:39 | Re : Lire l'évènement d'un composant crée en "runtime mode "

tayebrabehi

Merci infiniment Caribensila c'est ce que je voulais ..




Cette discussion est classé dans : composant, lire, crée, runtime, évènement


Répondre à ce message

Sujets en rapport avec ce message

problème de runtime avec un composant tdatabase [ par fcantan ] Bonjour,Mon appli développée en Delphi 7 dialogue avec oracle via ODBC.Si je n'utilise pas de composant Tdatabase, je n'ai aucun pb de déploiement sur [composant] TShellChangeNotifier [ par adelavarenne ] Salut,je voudrais utiliser le composant TShellChangeNotifier mais je ne trouve pas grand chose dans l'aide et je galère grave.Voila je veux déclencher Runtime error 217 [ par Jos ] Bonjour, Lorsque je tente d'inclure un composant treelist, dans mon application, j'ai des problèmes. En effet, par la suite, au application.termina composant Tanimate [ par mighty_warrior ] Bonjour,Est-ce que quelqu'un pourrait me renseigné sur le composant Tanimate parce que l'aide de delphi ne m'apporte pas grand chose.D'aprés ce que j' effacer un composant crée dynamiquement [ par fidji ] Bonjour, J'ai un problème lié à la construction et destructions de composants dynamiquement.Lorsque je veux détruire le composant TTreeView conteneur de composants ? [ par DooM666 ] Bonjour, je voudrais afficher dans un TTreeView (ou un autre composant si vous avez une proposition) un composant pour chaque node, par exemple un bou Evènement d'un formulaire à l'autre [ par sawbo ] Bonjour, J'ai 2 formulaire: Fiche1 avec un Tedit Edit1 Fiche2  avec un Tedit Edit2 Je veux que lorsque j'écris dans Edit1 cela se transmet dans Edit2 Lire port parallèle [ par revsys ] Bonjour,J'utilise ZLportIO pour pouvoir communiquer avec le port parallèle, et plus précisement pouvoir lire la pin n°14.procedure TForm1.FormCreate(S Importer une table dans un Dbgrid en RunTime? [ par jennybless ] Salut tout le monde!J'ai une question qui paraitrait simple pour certains. Mais elle est peut difficile pour moi. Pourriez-vous me supporter un peu...


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,20 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.