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

Composants FMX Delphi Discussion :

Création de composant


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Billets dans le blog
    4
    Par défaut Création de composant
    bonjour

    a gauche ma cible, à droite le résultat ou l'on voit deux toolbar au lieu d'une


    http://alheuredudejeuner.fr/images/AlhFiremonkey.zip

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    unit uAlhFloatingWindows;
     
    interface
     
    uses
      System.SysUtils, System.Classes, FMX.Types, FMX.Controls,System.Types,System.UITypes,
      FMX.Platform ;
     
    type
      TAlhFloatingWindows = class(TPanel)
      private
        { Déclarations privées }
     
        OkDeplace: Boolean;
        HoldPosition: TPointF;
        HoldMousePosition: TPointF;
     
      protected
        { Déclarations protégées }
      public
        { Déclarations publiques }
        aTitleBar   : TToolBar;
        bClose : TButton;
     
        constructor Create(AOwner: TComponent);  override;
        destructor Destroy; override;
     
        procedure obOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
        procedure obOnMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Single);
        Procedure obOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
     
      published
        { Déclarations publiées }
      end;
     
     
    procedure Register;
     
    implementation
     
    constructor TAlhFloatingWindows.Create(AOwner: TComponent);
    begin
      Inherited Create(AOwner);
     
      aTitleBar:=TToolBar.Create(self);
      bClose:=TButton.Create(self);
     
      with bClose do
      begin
        Parent:=aTitleBar;
        Height:=25;
        Width:=25;
        Align:=TAlignLayout.alRight;
        Text:='X';
      end;
      with aTitleBar do
      begin
        Parent:=Self;
        Height:= 25;
        OnMouseDown:=obOnmouseDown;
        OnMouseMove:=obOnMouseMove;
        OnMouseUp:=obOnMouseUp;
      end;
     
     
    end;
     
    destructor TAlhFloatingWindows.Destroy;
    begin
     
      Inherited;
    end;
     
     
     
    procedure TAlhFloatingWindows.obOnMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Single);
    begin
      OkDeplace:=false;
    end;
     
    procedure TAlhFloatingWindows.obOnMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Single);
    begin
      OkDeplace:=true;
      HoldPosition.X:=Position.X ;
      HoldPosition.Y:=Position.Y;
      HoldMousePosition:=Platform.GetMousePos;
    end;
     
    procedure TAlhFloatingWindows.obOnMouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Single);
    begin
      if OkDeplace then
      begin
        Position.X:=HoldPosition.X+(Platform.GetMousePos.X-HoldMousePosition.X);
        Position.Y:=HoldPosition.Y+(Platform.GetMousePos.Y-HoldMousePosition.Y);
      end;
    end;
     
    procedure Register;
    begin
      RegisterComponents('AlhFiremonkey', [TAlhFloatingWindows]);
    end;
     
    end.
    Question : qu'est-ce qui ne va pas dans ce code ?

    Cordialement

    André

  2. #2
    Membre éclairé

    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2006
    Messages
    621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2006
    Messages : 621
    Par défaut
    Salut,

    petite question : c'est quoi tes "Composants[8]" et [9] ? Si c'est des TTOolbar comme le 9 est n fils de 8, c'est normal que tu en voies 2.
    PAr ailleurs, si j'en crois le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    with bClose do
      begin
        Parent:=aTitleBar;
        Height:=25;
        Width:=25;
        Align:=TAlignLayout.alRight;
        Text:='X';
      end;
    ton bClose a effectivement comme parent ton toolbar...
    A moins que j'ai pas bien compris ton affaire...

  3. #3
    Membre chevronné
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Billets dans le blog
    4
    Par défaut
    c'est quoi tes "Composants[8]" et [9]

    c'est des composant créer une deuxième fois après que j'ai déposer le nouveau composant sur une fiche et que j'ai exécuter le programme,

    j'ai remplacé le toolbar par un panel, et je cherche un bout de code pour empêcher la création des composants si il sont déjà créés.

    André

  4. #4
    Membre éclairé

    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2006
    Messages
    621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2006
    Messages : 621
    Par défaut
    houla pas tout compris là...

  5. #5
    Membre chevronné
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Billets dans le blog
    4
    Par défaut le code de create se rexecute plusieurs fois
    ce code là
    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
      aTitleBar:=TToolBar.Create(self);
      bClose:=TButton.Create(self);
     
      with bClose do
      begin
        Parent:=aTitleBar;
        Height:=25;
        Width:=25;
        Align:=TAlignLayout.alRight;
        Text:='X';
      end;
      with aTitleBar do
      begin
        Parent:=Self;
        Height:= 25;
        OnMouseDown:=obOnmouseDown;
        OnMouseMove:=obOnMouseMove;
        OnMouseUp:=obOnMouseUp;
      end;
    s’exécute plusieurs fois

    Normalement ne devrais s'executer qu'une fois.

  6. #6
    Membre chevronné
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Billets dans le blog
    4
    Par défaut le tes de base
    vu dans le dernier dev du jeudi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    MonPanel:=TAlhFloatingWindows.Create(self);
    MonPanel.Parent:=Self;
    MonPanel.Position.X:=100;
    MonPanel.Position.Y:=100;
    end;
    fonctionne parfaitement,
    le problème survient en design.

    J'ai joint l'exemple pour haut, il suffit d’exécuter plusieurs fois l'application exemple dans Delphi pour voir.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Création de composant] Surcharge de OnMouseMove
    Par yoghisan dans le forum Composants VCL
    Réponses: 2
    Dernier message: 18/02/2004, 22h34
  2. [Création de composant] Composant exclu de ComponentCount
    Par yoghisan dans le forum Composants VCL
    Réponses: 6
    Dernier message: 18/02/2004, 12h45
  3. [Création de composant] Focus
    Par Pedro dans le forum Composants VCL
    Réponses: 4
    Dernier message: 16/02/2004, 13h57
  4. Ordre de création de composant
    Par bobby-b dans le forum Composants VCL
    Réponses: 4
    Dernier message: 15/09/2003, 19h05
  5. [Kylix] Création de composant
    Par glub dans le forum EDI
    Réponses: 2
    Dernier message: 08/01/2003, 16h58

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