IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Lazarus Pascal Discussion :

Indirection sur des TForms et appel de procédures


Sujet :

Lazarus Pascal

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Indirection sur des TForms et appel de procédures
    Bonjour,

    je n'arrive pas à créer - mais je ne sais pas si c'est possible dans ce cas - une indirection sur les TForms permettant d'utiliser des procedures contenues dans ces dernières.

    J'ai 2 Forms, Form1 et Form2 qui contiennent chacune une procedure disons ProcHomonyme() définie ainsi
    * procedure TForm1.ProcHomonyme(Sender: TObject); //dans l'unit1;
    * procedure TForm2.ProcHomonyme(Sender: TObject); //dans l'unit2;
    Evidemment bien qu'elles soient homonymes, elles ont des contenus différents. Elles sont appelées lors de la création de chacune des Forms 1 et 2 et ces 2 procédures sont également appelées par une autre Form, TFormMain, ainsi :

    uses ...., unit1, unit2;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var
        i : integer;
    begin
      for i := 0 to Screen.FormCount-1 do
        // uses StrUtils;
        case AnsiIndexStr(Screen.Forms[i].UnitName, ['unit1', 'unit2']) of
             0 : Form1.ProcHomonyme(nil);
             1 : Form2.ProcHomonyme(nil);
          //-1 : Aucun cas
        end;
    end;
    Cela fonctionne.


    Je me suis demandé si je pouvais faire une indirection sur une TForm avec Lazarus. C'est peut-être un peu osé voire même complètement idiot dans ce cas [appel d'une procédure] ?

    Donc, toujours dans TFormMain :

    type
    P = ^TForm;

    et dans la procédure d'appel
    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
    17
    18
    19
    var
        i : integer;
        F : P;
    begin
      for i := 0 to Screen.FormCount-1 do 
        begin
          new(F);
          F^ := screen.Forms[i];
          F^.Caption := 'Truc '+ IntToStr(i);  //Fonctionne bien. Le caption des 
          //Forms est bien changé.
          //Par contre 
          //F^.Name.ProcHomonyme(nil); :oops:
          // Peut-on appeler les fonctions ProcHomonyme(nil) ?
          // Si oui, comment ?
          // Faut-il les déclarer d'une manière spécifique dans les Forms 1 et 2 
          // (surchargées) pour qu'elles soient appelables avec cette méthode ? 
          dispose(F);
        end;
    end;
    Merci. Cordialement.
    Gilles
    Dernière modification par Invité ; 07/07/2010 à 14h30. Motif: Précisions

Discussions similaires

  1. Clés primaires sur des tables externes, alternatives par procédures stockées ?
    Par Jean-Philippe André dans le forum Développement
    Réponses: 18
    Dernier message: 10/07/2012, 17h21
  2. Etablir des liens sur des niuméros pour appels automatiques
    Par zerobug dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 17/11/2008, 11h13
  3. Réponses: 12
    Dernier message: 19/08/2007, 19h26
  4. [SQL-Server] requête sur des procédures stockées
    Par babap1 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/07/2007, 13h23
  5. Réponses: 1
    Dernier message: 26/02/2007, 09h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo