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 VCL Delphi Discussion :

[smDBGrid] demande de retours d'expériences


Sujet :

Composants VCL Delphi

  1. #1
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 120
    Points : 41 254
    Points
    41 254
    Billets dans le blog
    63
    Par défaut [smDBGrid] demande de retours d'expériences
    Trés satisfaisant jusqu'à présent , voilà que maintenant en voulant aller plus loin je bute sur deux problèmes avec cet excellent composant, j'aimerais savoir si l'un de vous à déjà eu, réglé ce problème .

    Voulant essayé de changer la couleur d'une cellule selon sa valeur (truc Classique) j'ai utilisé l'evenement recommandé GetCellParam

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure TForm.SMDBGrid1GetCellParam(Sender : TObject; Field : TField;
      AFont : TFont; var BackGround : TColor; Highlight : Boolean);
    begin
    if UpperCase(Field.FieldByname)='NUMERO' then
      begin
         if Table1.FieldByname('ETAT').asInteger=0 
           then BackGround:=clWhite
           else BackGround:= clLime;       
      end;  
    end;
    tout serait parfait si , lorsque la cellule est selectionnée et que ETAT = 0 je ne voie plus la valeur (blanc sur blanc = transparent )

    Je me suis alors dit alors que ,plutôt que de changer les couleurs, j'allais mettre un glyphe dans la colonne de gauche(colonne indicateur) . Las , patatras même la demo du composant plante

    s'agit-il d'un problème de version de Windows (je teste sous XP) ? de version du composant (j'ai téléchargé le dernier) ?

    BREF , Qu'en dites vous ?

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Pour la couleur, tu peux faire à l'ancienne aussi dans le DrawColumnCell

    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
     
    procedure TfrmMain.SMDBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
    var
      sText : String;
    begin
    With TSMDBGrid(Sender),canvas do
     begin
        sText := Column.Field.AsString;
     
        If not (gdSelected In State) then
        begin
          if DataSource.DataSet.FieldByname('ETAT').asInteger=0 then
          begin
            Brush.Color := clWhite;
            Font.Color := clBlack;
          end
          else begin
            Brush.Color := clLime;
            Font.Color := clBlack;
          end;
       end;
     
      TextRect(Rect,Rect.Left + 2,Rect.Top + 2,sText);
    end;
    end;
    Pour la glyph, as tu pensé à activer l'option (oeShowGlyph dans ExOptions) et augmenter la taille WidthOfIndicator ?

    PS: J'utilise une version plus ancienne (3.48)

  3. #3
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    J'avais trouvé une solution en ajoutant simplement la modification de la couleur AFont. Ma réponse est moins complète, mais fonctionne. Après, il faut adapter à tes besoins.

    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
    procedure TForm.SMDBGrid1GetCellParam(Sender : TObject; Field : TField;
      AFont : TFont; var BackGround : TColor; Highlight : Boolean);
    begin
    if UpperCase(Field.FieldByname)='NUMERO' then
      begin
         if Table1.FieldByname('ETAT').asInteger=0 then 
         begin 
            BackGround:=clWhite;
            AFont.Color := clNavy;
         end else 
         begin
            BackGround:= clLime;       
            AFont.Color := clNavy;
         end;
      end;  
    end;
    Pour le Glyph, je n'ai pas vérifié.

    Bon courage

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 120
    Points : 41 254
    Points
    41 254
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par Rayek Voir le message
    Pour la couleur, tu peux faire à l'ancienne aussi dans le DrawColumnCell
    C'est que que j'ai fait , mais je voulais surtout savoir si le comportement était identique pour vous avec le GetCellParam

    Citation Envoyé par Rayek Voir le message
    Pour la glyph, as tu pensé à activer l'option (oeShowGlyph dans ExOptions) et augmenter la taille WidthOfIndicator ?
    le problème n'est pas qu'il ne s'affiche pas , mais que comme dans la demo cela plante aprés l'affichage de la première ligne.

    @BRODU j'avais aussi penser à la couleur de la FONT mais là c'est plutôt savoir si la cellule etait selectionnée qui m'a bloqué (Highlight n'a pas été convainquant)

    Je me demandais surtout s'il fallait le signaler a l'auteur

    [EDIT]
    finalement j'ai biaisé en utilisant GetCellParams et une instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if HighLight then AFont.Color:=clWindowText
    ce qui fonctionne a peu près . Cependant je suis déçu je viens d'essayer sur un poste Vista, même chose pour les glyphes , Un Bug ?

    (version Freeware SMComponent library v3.55)

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Mes applications tournent sur différent poste et je n'ai aucun problème avec les glyph.

    Tu peux faire voir ton code d'implémentation des glyph ?

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 120
    Points : 41 254
    Points
    41 254
    Billets dans le blog
    63
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm.SMDBGrid1GetGlyph(Sender : TObject; var BitMap : TBitMap)
    begin
    if Table1.FieldByname('ETAT').asInteger=0 
      then  Bitmap:=Image1.Picture.Bitmap
      else   Bitmap:=Image2.Picture.Bitmap
    end;
    c'est pratiquement le code de la demo (griddemo.dpr dans le repertoire demos\smdbgrid ) , qui elle non plus ne fonctionne pas . Problème de version de DELPHI peut-etre (BDS2006) ?

    je vais essayer avec D7 ....
    [EDIT]
    C'est fait , avec la même erreur ---> problème de version ? SMDBCompnt

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Il faut créer le bitmap sinon ça ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm.SMDBGrid1GetGlyph(Sender : TObject; var BitMap : TBitMap)
    begin
      Bitmap := TBitmap.Create;
     
    if Table1.FieldByname('ETAT').asInteger=0 
      then   Bitmap.Assign(Image1.Picture.Bitmap)
      else    Bitmap.Assign(Image2.Picture.Bitmap);
    end;

  8. #8
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 120
    Points : 41 254
    Points
    41 254
    Billets dans le blog
    63
    Par défaut
    t'es le meilleur après le beurre
    je m'étais fié à la démo et je n'en démordais pas


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

Discussions similaires

  1. Demande de retours d'expérience utilisateurs
    Par vanefre dans le forum GED
    Réponses: 0
    Dernier message: 17/07/2012, 17h17
  2. Problème d'antivirus - demande de retour d'expérience.
    Par Masmeta dans le forum Développement Windows
    Réponses: 2
    Dernier message: 16/07/2012, 17h32
  3. Réponses: 5
    Dernier message: 23/07/2010, 08h55
  4. Demande de retour d'expérience sur IML Studio
    Par xav2229 dans le forum SAS STAT
    Réponses: 11
    Dernier message: 08/02/2010, 16h21
  5. [POI] demande retour d'expérience
    Par Invité dans le forum Documents
    Réponses: 6
    Dernier message: 21/04/2006, 21h49

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