Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

Problème de procédure objet : Migration de TForm vers TFrame


Sujet :

Composants VCL Delphi

  1. #1
    Membre averti
    Problème de procédure objet : Migration de TForm vers TFrame
    salut,

    J'ai un projet ou j utilise plusieur form et j ai fais une procédure objet, pour que toute les forms puissent réagir a la même procédure

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    type
     TEmission_douchette=Procedure (trame:string) of object;
     
    procedure X;
    begin
     if length(screen.ActiveForm.Name)<>0 then
      begin
        @fonction_douchette:=screen.ActiveForm.MethodAddress('Emission_douchette');
        if @fonction_douchette<>nil then
        begin
          fonction_douchette(envoi_trame);            
          application.processmessages;
        end;
      end;     
    end;


    Pour plus de simplicité dans mon code j'ai modifier mon programme pour créer dynamiquement des frames. Or maintenant, il n'existe pas de procédure "AcitveFrame" pour savoir qu'elle frame est encours d'affichage. Donc je me retrouve bloquer.

    J ai pensé a faire une boucle de ce style:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for loop:=0 to form_pp.ComponentCount-1 do
    begin
      if (form_pp.Components[loop] is Tframe) then
      begin
        showmessage('ok');
      end;
    end;


    Mais la aussi problème ..... car ce n'est paas une classe Tframe , mais des classes de frame propriétaire du style :

    Tframe_login
    Tframe_progression
    .....



    Si vous avez une petit idée , je suis preneur ....
    Merci d avance.

  2. #2
    Rédacteur

    Salut
    :
    Ton code devrait marcher normalement...
    Sinon essaie:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for loop:=0 to form_pp.ComponentCount-1 do 
    begin 
      if (form_pp.Components[loop].InheritsFrom(Tframe)) then 
      begin 
        showmessage('ok'); 
      end; 
    end;

    Note: il te faudra peut-être caster form_pp.Components pour pouvoir accéder à InheritsFrom...
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Membre actif
    A tu essayer d'utiliser les evenement des TFrame ? En fait je crois que l'interet de créer des frame et que, justsment, ce sont elle même qui sont responsable des évenement quelle receptionne.
    De toutes les choses que j'ai perdue,
    Celle qui me manque le plus...
    c'est mon esprit !

  4. #4
    Membre averti
    oui je n y avais pas penser !!!!

    Je suis pas en forme aujourd hui. merci