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

Delphi Discussion :

Probleme de création de label d'un form a un autre.


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 11
    Par défaut Probleme de création de label d'un form a un autre.
    Bonjour Je pose ça la
    Voici mon code
    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
    unit U_Main;
     
    interface
     
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,U_Create,U_Modif,U_Remove,U_Start,U_Save,
      Vcl.Imaging.pngimage;
     
    type
      TU_Principal = class(TForm)
        Panel1: TPanel;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        Image1: TImage;
        Label1: TLabel;
        Label2: TLabel;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure Image1Click(Sender: TObject);
        procedure Label1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
        aNewLabel: Tlabel;
      end;
     
    var
      U_Principal: TU_Principal;
     
     
     
     
     
    implementation
     
    {$R *.dfm}
     
    procedure TU_Principal.Button1Click(Sender: TObject);
    begin
    if not Assigned(U_Creer) then
        U_Creer := TU_Creer.create(application);
      U_Creer.Show;
    end;
     
    procedure TU_Principal.Button2Click(Sender: TObject);
    begin
    if not Assigned(U_Modifier) then
        U_Modifier := TU_Modifier.create(application);
      U_Modifier.Show;
    end;
     
    procedure TU_Principal.Button3Click(Sender: TObject);
    begin
    if not Assigned(U_Supprimer) then
        U_Supprimer := TU_Supprimer.create(application);
      U_Supprimer.Show;
    end;
     
    procedure TU_Principal.Button4Click(Sender: TObject);
    begin
    if not Assigned(U_Demarrer) then
        U_Demarrer := TU_Demarrer.create(application);
      U_Demarrer.Show;
    end;
     
    procedure TU_Principal.Image1Click(Sender: TObject);
    begin
    if not Assigned(U_Sauvegarde) then
        U_Sauvegarde := TU_Sauvegarde.create(application);
      U_Sauvegarde.Show;
    end;
     
    procedure TU_Principal.Label1Click(Sender: TObject);
    begin
    //label1.Caption:=FichierIni;
    end;
     
    end.
    Voici la partie graphique de mon code :Nom : Screenshot_1.png
Affichages : 417
Taille : 8,0 Ko
    et la deuxième fenêtre pour créer les rappels (je vais vous expliquer après )
    Mon deuxième code :
    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
    unit U_Create;
     
    interface
     
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls ,IniFiles, Vcl.Mask;
     
    type
      TU_Creer = class(TForm)
        Edit1: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        Button1: TButton;
        Button2: TButton;
        MaskEdit1: TMaskEdit;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      U_Creer: TU_Creer;
      FichierIni : TIniFile;
      NouveauLabel: Tlabel;
      i: integer;
      Convertion: Extended;
      VariableString: String;
      NomRappelLecture:String;
     
     
    implementation
     
    {$R *.dfm}
     
    uses U_Main;
    procedure TU_Creer.Button1Click(Sender: TObject);
     
    begin
      FichierIni:=TIniFile.Create('.\FichierRappel.ini'); //Créée le fichier ini si il n'existe pas
      FichierIni.WriteString('NomRappel','Rappel1',Edit1.Text); //Ecrit dans le fichier ini
      FichierIni:=TIniFile.Create('.\FichierRappel.ini'); //Créée le fichier ini si il n'existe pas
      FichierIni.WriteString('TempsRappel','Temps1',MaskEdit1.Text); //Ecrit dans le fichier ini
      variableString:=FichierIni.ReadString('TempsRappel','Temps1','');//Lit dans le fichier ini
      NomRappelLecture:=FichierIni.ReadString('NomRappel','Rappel1','');//Lit dans le fichier ini
      Convertion:=strtofloat(VariableString);
      //FichierIni.Free;
      //boucle pour la créeation des label dans l'espace de la fenêtre1
      for i :=0 to 9 do
       if i =0 then
       // code de création du rappel
       NouveauLabel:= TLabel.Create(self);
       parent:=U_Main;
       NouveauLabel.Caption:=U_Create.Convertion;
       NouveauLabel.Name:=NouveauLabel+'i';
       NouveauLabel.Top:=50;
       NouveauLabel.Left:=10;
       NouveauLabel:= Tlabel.Create(U_Main);
       NouveauLabel.Caption:=U_Create.NomRappelLecture;
       NouveauLabel.Name:=NouveauLabel+'Bis'+'i';
       NouveauLabel.Top:=50;
       NouveauLabel.Left:=30;
     
        if i =1 then
       // code de création du rappel
       NouveauLabel:= Tlabel.Create(U_Main);
       NouveauLabel.Caption:=U_Create.Convertion;
       NouveauLabel.Name:=NouveauLabel+'i';
       NouveauLabel.Top:=50;
       NouveauLabel.Left:=50;
       NouveauLabel:= Tlabel.Create(U_Main);
       NouveauLabel.Caption:=U_Create.NomRappelLecture;
       NouveauLabel.Name:=NouveauLabel+'Bis'+'i';
       NouveauLabel.Top:=50;
       NouveauLabel.Left:=70;
      Close();
    end;
     
     
     
    procedure TU_Creer.Button2Click(Sender: TObject);
    begin
    Close();
    end;
     
    end.
    La partie graphique Nom : Screenshot_2.png
Affichages : 413
Taille : 8,0 Ko

    Voilà l'annexe est transmit.Vous me dirai "ok c'est bien tout ça mais qu'elle est le problème ?"
    L'explication de l'appli. Pour créer un rappel il faut entrer le nom et le temps du rappel. Logique, les information sont ensuite stocker dans un fichier .ini pour sauvegarder les rappels. Ensuite je viens lire les informations de type String logique c'est un fichier .ini pour les convertir en type extended car les données temps serviront à faire un minuteur où arriver à 0 une Pop Up se déclanche.
    puis ces données seront encore converti en string pour être afficher sur un label.
    Mon problème est que je n'arrive pas à créer les labels Nom du rappel et le timer sur la fenêtre principal quand on clique sur créer de la form2 alors j'ai essayer avec les visible invisible mais c'est pas ce que je veux car on ne sais pas cb de rappel vont être créer. Sinon j'arrive a transmettre les données d'une form à une autre .
    Merci de vos réponse futur.
    A la fin on obtient un truc du genre Nom : Screenshot_7.png
Affichages : 420
Taille : 10,1 Ko
    donc j'ai essayer ça mais sans succès
    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
    procedure TU_Creer.Button1Click(Sender: TObject);
     
    begin
      FichierIni:=TIniFile.Create('.\FichierRappel.ini'); //Créée le fichier ini si il n'existe pas
      FichierIni.WriteString('NomRappel','Rappel1',Edit1.Text); //Ecrit dans le fichier ini
      FichierIni:=TIniFile.Create('.\FichierRappel.ini'); //Créée le fichier ini si il n'existe pas
      FichierIni.WriteString('TempsRappel','Temps1',MaskEdit1.Text); //Ecrit dans le fichier ini
      variableString:=FichierIni.ReadString('TempsRappel','Temps1','');//Lit dans le fichier ini
      NomRappelLecture:=FichierIni.ReadString('NomRappel','Rappel1','');//Lit dans le fichier ini
      Convertion:=strtofloat(VariableString);
      //FichierIni.Free;
      //boucle pour la créeation des label dans l'espace de la fenêtre1
      for i :=0 to 9 do
       if i =0 then
       // code de création du rappel
       NouveauLabel:= TLabel.Create(self);
       parent:=U_Main;
       NouveauLabel.Caption:=U_Create.Convertion;
       NouveauLabel.Name:=NouveauLabel+'i';
       NouveauLabel.Top:=50;
       NouveauLabel.Left:=10;
       NouveauLabel:= Tlabel.Create(U_Main);
       NouveauLabel.Caption:=U_Create.NomRappelLecture;
       NouveauLabel.Name:=NouveauLabel+'Bis'+'i';
       NouveauLabel.Top:=50;
       NouveauLabel.Left:=30;
     
        if i =1 then
       // code de création du rappel
       NouveauLabel:= Tlabel.Create(U_Main);
       NouveauLabel.Caption:=U_Create.Convertion;
       NouveauLabel.Name:=NouveauLabel+'i';
       NouveauLabel.Top:=50;
       NouveauLabel.Left:=50;
       NouveauLabel:= Tlabel.Create(U_Main);
       NouveauLabel.Caption:=U_Create.NomRappelLecture;
       NouveauLabel.Name:=NouveauLabel+'Bis'+'i';
       NouveauLabel.Top:=50;
       NouveauLabel.Left:=70;
      Close();
    end;

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 090
    Par défaut


    Panel1, Button1, Label1 ... faudrait renommer tout ça pour que cela soit un minimum compréhensible
    Surtout quand on Button1Click, Button2Click, Button3Click, Button4Click ... je serais prof, je ne lit pas plus loin, je mets Zéro d'office !

    devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NouveauLabel.parent:=U_Main;
    Si là c'est la fenêtre U_Créer qui va se retrouver dans U_Main

    D'ailleurs ce nommage U_Main, U_Creer, U_Principal c'est très maladroit !
    Vous confondez le nom de l'unité et le nom de la variable globale, cela ne rend pas le code claire (sans compter que ces variables globales, on finit vite par ne jamais utilisé ces horreurs en dehors de la MainForm)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    unit U_Main;
    type
      TFormPrincipal = class(TForm)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    unit U_Create;  
    type
      TFormCreer = class(TForm)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i :=0 to 9 do
     if i =0 then
     if i =1 then
    Faut revoir votre façon de faire une boucle, il manque des begin end

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NouveauLabel.Name:=NouveauLabel+'Bis'+'i';
    Douteux la concaténation d'une référence d'objet, d'une chaine et de 'i' ... ça ne compile et indique vous devriez commencer par quelque chose de plus simple pour déjà maitriser la conversion des types


    C'est quoi ce Close ? vous fermer la fenêtre alors que je vois du Owner Self TLabel.Create(self);, risque de libération de mémoire imprévue

    Si vous devez créer 20 labels ceci est déjà un peu plus pertinent (à mon avis vous devriez en créer 40, un pour le label, un pour le chrono)
    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
    for i :=0 to 9 do
    begin 
     NouveauLabel := TLabel.Create(U_Main);
     NouveauLabel.parent:=U_Main;
     NouveauLabel.Caption:= Format('Nouveau Label %d', [i]);
     NouveauLabel.Name:= Format('NouveauLabel_%d', [i]);
     NouveauLabel.Top:=50 + 20 * i;
     NouveauLabel.Left:=10;
     
     NouveauLabel := TLabel.Create(U_Main);
     NouveauLabel.parent:=U_Main;
     NouveauLabel.Caption:= '00:00:00'
     NouveauLabel.Name:= Format('NouveauLabel_%d_V', [i]);
     NouveauLabel.Top:=50 + 20 * i;
     NouveauLabel.Left:=100;
     
     NouveauLabel:= Tlabel.Create(U_Main);
     NouveauLabel.parent:=U_Main;
     NouveauLabel.Caption:=Format('Nouveau Label Bis %d', [i]);
     NouveauLabel.Name:= Format('NouveauLabel_Bis_%d', [i]);
     NouveauLabel.Top:=50 + 20 * i;
     NouveauLabel.Left:=200;
     
     NouveauLabel := TLabel.Create(U_Main);
     NouveauLabel.parent:=U_Main;
     NouveauLabel.Caption:= '00:00:00'
     NouveauLabel.Name:= Format('NouveauLabel_Bis_%d_V', [i]);
     NouveauLabel.Top:=50 + 20 * i;
     NouveauLabel.Left:=290;
     
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    Quel intérêt de créer autant de tlabel que de rappel ?
    Il serait plus simple d'utiliser une TStringGrid

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 11
    Par défaut
    Merci de vos réponse je m'attelle à la tâche

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 090
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    Quel intérêt de créer autant de tlabel que de rappel ?
    Il serait plus simple d'utiliser une TStringGrid
    Peut-être une façon imposer à but didactif par le professeur, maitriser la création dynamique de contrôle ouvre pas mal de chose à savoir.

    Ensuite, il pourra montrer que l'on peut le faire plus simplement avec une TStringGrid, ce contrôle étant bien trop simple (c'est le premier que j'ai maitrisé en affichant le contenu de la carte Sesam Vitale, sans connaitre Delphi ni même la programmation (je savais coder sur un Ti80 et HP48Gx), je me débrouillais bien à la fin de la première semaine, CastorCharly qui traine ici m'a largué dessus, il ne m'a pas appris à coder, il m'a appris à CHERCHER, j'ai appris la touche F1, une compétence devenue rare.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 638
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Citation Envoyé par ShaiLeTroll Voir le message
    j'ai appris la touche F1, une compétence devenue rare.
    de plus en plus rare si l'on utilise D7 car Microsoft n'aime pas les vieux fichiers HLP chaque fois qu'il y a mise à jour je suis obligé vérifier et souvent remettre le vieux lecteur d'aide

Discussions similaires

  1. [VB.NET] Probleme de création d'une picturebox dans le code
    Par stringman62 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/02/2006, 16h56
  2. Probleme espace entre DIV du a un FORM
    Par Little_Goldo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/10/2004, 20h50
  3. Problemes de création en exécution
    Par popeyes dans le forum Composants VCL
    Réponses: 6
    Dernier message: 29/06/2004, 19h02
  4. Création d'un objet d'un form a l'autre
    Par Argonz dans le forum C++Builder
    Réponses: 12
    Dernier message: 03/03/2004, 10h23
  5. création d'un bouton de forme arrondie
    Par THIERRY L. dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/12/2003, 14h04

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