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 :

Composant ListChartSource : création et destruction [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 4
    Par défaut Composant ListChartSource : création et destruction
    Bonjour,
    dans mon code j'affiche plusieurs séries, pour cela j'affecte a chaque série un listChartsource dans lequel je rentre mes données, et j'affiche les courbes.
    Jusque la tout va bien.
    Si je veux réafficher d'autres courbes je clear mes series, il m'indique que les listcharsources existent déjà: ce qui est normale.
    Mais si j'essaie de les supprimer j'ai une erreur:" Le projet a levé une exception de class 'External:SIGSEV' des que je veux afficher les courbes .
    Je fais surement qque chose d'incorrect, mais je tourne en rond, soit j'arrive a afficher une premiere fois mais pas deux, soit je n'arrive pas a afficher !
    Si quelqu'un peux m'aider?
    Merci d'avance.
    mon code ci dessous.
    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
     
    Chart1.Series.Clear;
    if Assigned(LChartSource) then LChartSource.Free;
    For i:=1 to 59 do
      begin
     
      // Creation serie et list source
     
       Series:=TLineSeries.Create(self);
       Series.Marks.Style:=smsNone;
       Series.ShowPoints:=true;
       Series.Pointer.Style:=psCircle;
       Series.Pointer.pen.Color:=i*5000;
       Series.active:=true;
       Series.LinePen.Color:=i*5000;
       Series.Add(i,'',clred);
       Chart1.AddSeries(Series);
       LChartSource:=TListChartSource.create(form2);
       LChartSource.Name:='ListChartSource'+inttoStr(i);
       Series.Source:=LChartSource;       
     
    //query sur les donnes
     
    Datasource60.DataSet.first;
       repeat
          x:=Datasource60.Dataset.fieldvalues['TrendedDateTime'];
          y:=Datasource60.Dataset.fieldvalues['trendvalue'];
          LChartSource.Add(X,Y,'',clred);
          Datasource60.dataset.next
       until Datasource60.dataset.EOF;
     end;

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Par défaut
    Bonjour,
    Citation Envoyé par borno Voir le message
    Je fais surement qque chose d'incorrect, mais je tourne en rond, soit j'arrive a afficher une premiere fois mais pas deux, soit je n'arrive pas a afficher !
    Eh bien déjà, ce serait d'écrire un code un peu plus aéré en laissant des espaces dans les instructions par exemple...

    Je vois déjà que des objets sont créés sans être rattachés au propriétaire adéquat, donc leur libération ne se fera pas systématiquement au bon moment, je ne parle pas de leur remplacement qui lui a par conséquence beaucoup de chances d'échouer (je pense à tous les ListChartSource1 à n) !

    Voici un code aéré et rectifié (à tester pour valider pleinement)
    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
    Chart1.Series.Clear;
    // if Assigned(LChartSource) then LChartSource.Free;
    // Inutile car la méthode Clear va supprimer ces objets (voir le code depuis l'EDI)
    for i := 1 to 59 do
    begin
     
      // Creation serie et list source
     
      // Series := TLineSeries.Create(self);
      // Non, l'objet est rattaché à Chart1, autant que cela soit lui le propriétaire
      // d'autant plus qu'il va les supprimer lors de l'appel à Clear !
      Series := TLineSeries.Create(Chart1);
      Series.Marks.Style := smsNone;
      Series.ShowPoints := True;
      Series.Pointer.Style := psCircle;
      Series.Pointer.Pen.Color := i * 5000;
      Series.Active := True;
      Series.LinePen.Color := i * 5000;
      Series.Add(i, '', clRed);
     
      Chart1.AddSeries(Series);
     
      // LChartSource := TListChartSource.create(form2);
      // Non, comme précédemment, l'objet est rattaché à Series, autant que cela soit lui le propriétaire
      LChartSource := TListChartSource.Create(Series);
      LChartSource.Name := 'ListChartSource' + IntToStr(i);
      Series.Source := LChartSource;

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 4
    Par défaut
    En effet mon copier coller a eu tendance a tasser les lignes...
    Quand au reste vous avez tout juste, en choisissant les bons propriétaires cela fonctionne parfaitement.
    En tant qu'amateur, je vois qu'il me reste encore beaucoup de chose à apprendre...

    Encore merci..

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

Discussions similaires

  1. [D7] Composant pour création de PDF
    Par Droïde Système7 dans le forum Composants VCL
    Réponses: 47
    Dernier message: 30/12/2009, 19h27
  2. Création et destruction dynamique de composants visuels
    Par Dr.Gang dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/10/2009, 17h19
  3. Coût de création et destruction de thread
    Par camboui dans le forum Windows
    Réponses: 41
    Dernier message: 02/06/2005, 12h36
  4. Problème création et destruction de processus.
    Par loupdeau dans le forum MFC
    Réponses: 5
    Dernier message: 08/04/2005, 13h33
  5. Création dynamique de composants et destruction
    Par cpdump dans le forum Composants VCL
    Réponses: 4
    Dernier message: 19/01/2005, 17h57

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