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 :

Procédure : paramètre TShape.


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 50
    Points : 16
    Points
    16
    Par défaut Procédure : paramètre TShape.
    Bonjour à tous,

    Me voila bloqué à nouveau...

    J'ai une procédure avec plusieurs paramètres! un des paramètres est un tableau de TShape car j’appellerai cette fonction une fois avec avec un tableau de TRectangle, et une autre fois avec des TCircle.
    Mais il me met des erreurs d'accè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
    procedure TForm4.minMaxTotalAmp(tab: array of real; tabLab: array of TLabel; str: string; arrayComposant: array of TShape);
    var
       t:integer;
       min, max, h: real;
       rmin, rmax: Tarray<integer>;
    begin
     
     ........... //pas important!
     
        for t := 0 to length(rmin)-1 do
        begin
             arrayComposant[rmin[t]].Stroke.Color:=TAlphaColorRec.Blue;
             arrayComposant[rmin[t]].Stroke.Thickness:=2;
        end;
        for t := 0 to length(rmax)-1 do
        begin
             arrayComposant[rmax[t]].Stroke.Color:=TAlphaColorRec.Red;
             arrayComposant[rmax[t]].Stroke.Thickness:=2;
        end;
     
    end;
    et j'appelle 2 fois ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    arrayRectTotal: array[0..5] of TShape;
        arrayCerAmp: array[0..6] of TShape;
     
    minMaxTotalAmp(tabTot, arrayLabelTot, 'V', arrayRectTotal);
      minMaxTotalAmp(tabAmp, arrayLabelAmpe, 'A', arrayCerAmp);

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 691
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 691
    Points : 13 121
    Points
    13 121
    Par défaut
    Citation Envoyé par parda3 Voir le message
    ........... //pas important!
    Je crains que si

    Comment sont remplis rmin/rmax ?
    Le contenu de ces tableaux doit être compris entre 0 et High(arrayComposant).

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 50
    Points : 16
    Points
    16
    Par défaut

    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
    procedure TForm4.minMaxTotalAmp(tab: array of real; tabLab: array of TLabel; str: string; arrayComposant: array of TShape);
    var
       t:integer;
       min, max, h: real;
       rmin, rmax: Tarray<integer>;
    begin
       min:=tab[0];
       max:=tab[0];
       tabLab[0].text:=format('%.2f'+str, [tab[0]/1000]);
       setlength(rmin, 1);
       setlength(rmax, 1);
       rmin[0]:=0;
       rmax[0]:=0;
       for t := 1 to 5 do
       begin
         h:=tab[t];
         tabLab[t].Text:=format('%.2f'+str, [tab[t]/1000]);
         if h=min then
         begin
              SetLength(rmin, Length(rmin)+1);
              rmin[Length(rmin)-1]:=t;
         end;
         if h<min then
         begin
              SetLength(rmin,1);
              min:=h;
              rmin[0]:=t;
         end;
         if h=max then
         begin
              SetLength(rmax, Length(rmax)+1);
              rmax[Length(rmax)-1]:=t;
         end;
         if h>max then
         begin
              SetLength(rmax,1);
              max:=h;
              rmax[0]:=t;
         end;
       end;
    rmin et rmax ne peuvent pas dépasser 6 éléments, de 0 à 5!
    Mon problème survient sur les lignes ou j'appelle arrayComposant!

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Il y a eu avant tous les Create et affectation de Parent pour TOUS les éléments de arrayComposant ?
    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

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 50
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Il y a eu avant tous les Create et affectation de Parent pour TOUS les éléments de arrayComposant ?
    arrayComposant est un des paramètre de ma fonction, mais les tableaux que j'appelle avec ma procedure sont bien définit dans mon Form.create.

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    et c'est ce arrayComposant qui doit contenir des objets invalides ou non instanciés qui explique la Violation d'accès
    Il te faut mettre en doute TOUT ton code lorsqu'il y a une violation d'accès

    Cela peut même être un autre code qui s'execute entre le remplissage de arrayComposant et son utilisation
    Par exemple, une autre boucle sur un tableau qui déborde et écrit sur arrayComposant des valeurs incorrectes
    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

  7. #7
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    si je reprends la suite de vos diverses discussions, à mon avis, vous vous êtes sacrément compliqué la vie !
    Personnellement je serais parti sur des frames (voir même des pseudos composants créés à partir de frames à la mode pprem )
    ou mieux encore de styles personnalisés (car, après tout, vous utilisez FMX)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 50
    Points : 16
    Points
    16
    Par défaut
    Haha!!! ça c'est intéressant!!! j'avais justement cherché au début comment créer un composant contenant 2 autres composants (une forme + un label)!
    Mais j'ai du mal cherché, ou ne pas mettre les bon mots clés!

    Je vais me documenter sur le sujet et essayer d'adapter mon code, car cela pourrait être plus clair.



    Mais pour le code j'ai mis tout ce qui est concerné. Le problème apparaît lorsque je change ma bordure!
    Voila l’état de mes variables avant que je lance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     for t := 0 to length(rmin)-1 do
        begin
             arrayComposant[rmin[t]].Stroke.Color:=TAlphaColorRec.Blue;
             arrayComposant[rmin[t]].Stroke.Thickness:=2;
        end;
        for t := 0 to length(rmax)-1 do
        begin
             arrayComposant[rmax[t]].Stroke.Color:=TAlphaColorRec.Red;
             arrayComposant[rmax[t]].Stroke.Thickness:=2;
        end;
    Nom : Sans titre.png
Affichages : 326
Taille : 31,7 Ko

    Est ce que le problème pourrait venir du fait que je déclare mes tableau de type TShape? Qu'il ne reconnaisse pas la propriétés Stroke?
    Mais étant donné que c'est la classe parent de TRectangle et TCircle, ça paraîtrait bizarre!!!

  9. #9
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par parda3 Voir le message
    Est ce que le problème pourrait venir du fait que je déclare mes tableau de type TShape? Qu'il ne reconnaisse pas la propriétés Stroke?
    Mais étant donné que c'est la classe parent de TRectangle et TCircle, ça paraîtrait bizarre!!!
    non, ce genre d'erreur ne peux se produire qu'à la compilation sur Delphi, on n'est pas sur un langage interprété mais sur un langage compilé fortement typé qui ne permet pas d'écrire n'importe quoi.

    mais ton code est assez incompréhensible en fait, et je soupçonne qu'il soit artificiellement complexe, peux-tu nous montrer l'écran que tu veux afficher et indiquer ce que ton code est supposé faire ? je crois comprendre que tu as des indicateurs qui changent de couleur suivant certains seuils, mais ce n'est pas très clair.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 50
    Points : 16
    Points
    16
    Par défaut
    Je suis en train de regarder les frames que m'a conseillé SergioMaster, cela va simplifier un peu!

    Mon programme récupère des données à partir de fichiers CSV, que je stock dans des tableau.
    ces valeurs, je dois les afficher et les dispatcher dans les différentes formes ci dessous. (Pour le moment, je travaille que sur ALab et Hello., 1er et dernière ligne)

    Ce que j'essaye de faire c'est de changer la bordure des formes qui ont la valeur min et max.

    Nom : Capture.PNG
Affichages : 323
Taille : 48,0 Ko

  11. #11
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par parda3 Voir le message
    Je suis en train de regarder les frames que m'a conseillé SergioMaster, cela va simplifier un peu!
    Heureux de le lire, et si, en plus ces frames sont transformées en "composant" voir https://register.gotowebinar.com/reg...90976759963907 cela sera encore plus simple
    mais je pense que les Styles peuvent être aussi une solution
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #12
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    alors voila typiquement le genre de situation ou je passe sur du code non visuel, mais bon j'ai quelques années d'expérience

    pour une approche plus simple, je créerais un TFrame qui représente une colonne et j'en placerais donc 6 côte à côte pour reproduire cet écran.

    l'avantage de passer par un TFrame c'est qu'on va pouvoir lui ajouter des méthodes et des propriétés ce qui va économiser les variables temporaires que tu as

    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
     
    type
      TMainform = class(TForm)
        Frame1: TFrameColonne;
        Frame2: TFrameColonne;
        Frame3: TFrameColonne;
        Frame4: TFrameColonne;
        Frame5: TFrameColonne;
        Frame6: TFrameColonne;
      private
       FColonnes: array[0..5] of TFrameColonne;
      end;
     
    procedure TMainFormCreate(Sender: TObject);
    begin
    // on va se simplifier la vie pour l'accès à la nième colonne une bonne fois pour toute
      FColonnes[0] := Frame1;
      FColonnes[1] := Frame2;
      FColonnes[2] := Frame3;
      FColonnes[3] := Frame4;
      FColonnes[4] := Frame5;
      FColonnes[5] := Frame6;
    end;
     
    procedure TMainForm.LoadCSV;
    var
      value: ...
    begin
      ...
      for i := 0 to 5 do
      begin
        value := ...
        FColonnes[i].SetValue(value); // une méthode à créer en fonction de tes besoins
      end;
     
      Min := 0;
      MinValue := FColonnes[0].GetValue(); // idem
      Max := 0;
      MaxValue := MinValue;
      for i := 1 to 5 do
      begin
        Value := FColonnes[i].GetValue();
         if Value < MinValue then
         begin
           Min := i;
           MinValue := Value;
         end;
         if Value > MaxValue then
         begin
           Max := i;
           MaxValue := Value;
         end;
       end;
      end;
     
    // et alors, par exemple
      for i := 0 to 5 do
      begin
        FColonnes[i].IsMini( i = Min);
        FColonnes[i].IsMaxi( i = Max);
      end;
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 50
    Points : 16
    Points
    16
    Par défaut
    Comme quoi, avoir un avis extérieure, c'est plutôt une bonne chose!

    Merci @SergioMaster pour ton lien, je vais écouter tout ça!

    @Paul, je te remercie grandement pour ton aide, avant d'aller plus loin, je vais refaire un petit point sur mon programme...
    Cela va faire 1 mois et demi que j'ai commencé à programmer en delphi et mon code à évoluer en même temps que moi! Il n'est pas optimisé sur certain point!
    Mais ton code me simplifie déjà la vie, j'utilisais des TGridPanelLayout pour organiser ma page, et avec tout ces composants à gérer 1 par 1, c'était un sacré bor...!!

    Je m'en vais apprendre et adapter mon code, je vous refait un point en fin d’après midi!

  14. #14
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Re,
    comme j'avais un doute avec les styles j'ai écrit une petite application simple objectif : vérifier que l'on pouvait changer un stylelookup au runtime
    Nom : Capture.PNG
Affichages : 303
Taille : 7,0 Ko
    le bouton "switch" interverti les formes (mais pas les textes du moins est censé ne pas changer les textes mais j'ai voulu souligner le fait)
    [Edit]
    j'ai simplifié le code puis répondu à la question qui allait certainement suivre : 'comment mettre des valeurs ?'

    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
     
    procedure TForm45.Button1Click(Sender: TObject);
    begin
    BeginUpdate;  // indique que la forme nécessitera un "rafraichissement"
    if Button1.Tag=0 then
     begin
      Panel1.StyleLookup:='inarectangle';
      Panel2.StyleLookup:='inacircle';
      Button1.Tag:=1;
     end
     else begin
      Panel1.StyleLookup:='inacircle';
      Panel2.StyleLookup:='inarectangle';
      Button1.Tag:=0;
     end;
    EndUpdate; // fin de mise à jour, rafraichit
    end;
     
    procedure TForm45.FormCreate(Sender: TObject);
    var AShape : TShape;
    begin
    Panel1.StylesData['text']:='un cercle';
    Panel2.StylesData['text']:='un rectangle';
    Panel1.StylesData['Forme.Fill.Color']:=TAlphaColors.Yellow; // comment initialiser une couleur (j'ai renommé dans mon style les Circle1Style1 et Rectangle1Style1 en forme)
    end;
     
    // évènement OnChange de Panel1
    procedure TForm45.Panel1ApplyStyleLookup(Sender: TObject);
    var AShape : TShape;
    begin
    // comment changer la couleur selon une valeur 
     if TPresentedControl(Sender).FindStyleResource<TShape>('forme',AShape) then
      begin
         if Button1.Tag=0
         then aShape.Fill.Color:=TAlphaColors.Green
         else aShape.Fill.Color:=TAlphaColors.Red;
      end;
    end;
     
    end.
    Voilà une petite chose qui pourrait bien faire l'objet d'un paragraphe du tutoriel sur les styles que j'envisageais d'écrire
    Fichiers attachés Fichiers attachés
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  15. #15
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Pour répondre @Paul, je ne suis pas sûr qu'il soit besoin d'ajouter de tableau de "FrameColonne",
    si parda3 continue à les mettre dans un TGridPanelLayout, ces composants seront déjà mémorisés dans le GridPanelLayout.ControlCollection
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 50
    Points : 16
    Points
    16
    Par défaut
    Donc on peut transformer un panel carré en un panel rond, sans changer sa nature, juste la forme! c'est super!!!

    C'est toi qui a créer les style inarectangle et inacircle, ou c'est des style par default à delphi? ils ne sont pas défini dans l'unit!

  17. #17
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    c'est moi dans la feuille de style il faut ouvrir le stylebook pour les voir
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  18. #18
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Pour répondre @Paul, je ne suis pas sûr qu'il soit besoin d'ajouter de tableau de "FrameColonne",
    si parda3 continue à les mettre dans un TGridPanelLayout, ces composants seront déjà mémorisés dans le GridPanelLayout.ControlCollection
    oui mais c'est juste plus simple d'avoir un tableau typé dont on fixe explicitement les éléments au lieu de supposer que le GridPanelLayout contient bien les composants auxquels on s'attend et dans l'ordre espéré...de plus, avec ce petit code d'initialisation on peut justement modifier l'organisation des éléments à l'écran selon les besoins sans que cela ne casse le code...ou au contraire on aura une erreur en disant que tel composant n'existe plus par exemple...mais en vrai, personnellement j'aurais sans doute écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TMainFormCreate(Sender: TObject);
    begin
      for i := 0 to 5 do
        FColonnes[i] := TFrameColonne.Create(Self);
    end;
    avec un constructor surchargé qui s'occupe de tout
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  19. #19
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 50
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    c'est moi dans la feuille de style il faut ouvrir le stylebook pour les voir
    J'avais mal regardé!


    Peut on accéder au tag du frame, en cliquant sur un des panel? J'ai bien sur défini un tag pour chaque frame!
    j'ai testé ca: ((Sender as TPanel).parent).parent.tag, mais je pense que c'est moche!

  20. #20
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    il faut choisir soit les frames soit les styles

    mais je pense que c'est moche!
    effectivement c'est plus que moche
    pourquoi ne pas ajouter au tframe une propriété ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Multiples appels de procédures - Paramètres OUT
    Par vingohan dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 25/06/2014, 15h22
  2. Automation : appel de procédure paramétrée
    Par Laestic dans le forum VBA Word
    Réponses: 3
    Dernier message: 18/11/2007, 18h46
  3. paramètre procédure stockée
    Par joe.lindien dans le forum Requêtes et SQL.
    Réponses: 19
    Dernier message: 20/04/2007, 12h43
  4. Réponses: 10
    Dernier message: 26/08/2004, 13h06
  5. Passer une procédure en paramètre ?
    Par Cornell dans le forum Langage
    Réponses: 2
    Dernier message: 24/10/2003, 12h21

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