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 :

[DbGrid] lignes de toutes les couleurs.. et les idées pas tres claires


Sujet :

Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut [DbGrid] lignes de toutes les couleurs.. et les idées pas tres claires
    Bon!

    Je ne comprend pas grand chose a ce tutoriel:
    http://delphi.developpez.com/faq/?pa...#couleurdbgrid

    Il faut déclarer DBGrid1DrawColumnCell en tant que procedure au debut du code et par la suite utiliser l'évènement OnDrawColumnCell qui est un re-dessinateur de cellule.
    Okay tres bien!! c'est fait mais par la suite, ça n'explique toujours pas comment colorier les celules de mon DbGrid.

    Supposons que j'ai un DbGrid avec un champs 'Prenom' et que je souhaite colorier toutes les lignes dont la valeur du champs 'Prenom' valent 'Julien'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dbgrid2.OnDrawColumnCell:= ????
    Enfin, je ne capte pas trop le procédé et les posts precedant sont pas mal complexes... (pour moi), quelqu'un aurait une explication simple
    Ou alors un exemple de code complet pour que je puisse decortiquer le tout!!!

    Merci

  2. #2
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    vas voir sur net, il y a des d'exemples si tu formules une recherche adhoc sur google.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut
    J'en ai un peu marre de tomber sur des truk foireux !!
    Donne moi un lien s'il en existe tant que cela.

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,


    Un meilleur exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; 
      Rect: TRect; State: TGridDrawState); 
    var 
      s: String; 
    begin 
      if (ACol = 2) and (ARow = 3) then 
      with Sender as TStringGrid do 
      begin 
        s := Cells[ACol, ARow]; 
        Canvas.Brush.Color := clRed; 
        Canvas.FillRect(Rect); 
        Canvas.Textout(rect.left+3,Rect.top+3,s) ; 
      end; 
    end;
    Je te suggere d'utiliser la propriété Objects des cellules (ou d'une seule cellule de la ligne) afin d'y mettre le style.
    Ensuite dans l'événement onDrawCell, tester cette propriété afin de faire le fillrect et le textout suivant le style désiré.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut
    Sorry mais je ne comprend absolument rien de tout cela!!!

    Tu travaille avec des TstrinGrid??? Que tu as l'air de considerer comme une matrice!!!

    Ce que je ne comprend pas c'est le developpement!
    Pour reprendre mon exemple précedent : comment faire comprendre au system qu'on veut colorier en bleu, noir ou maron devant et rose derriere les ligne dont le nom vaut "Jules", "henry" ou meme "Marie-antoinette"?

    Y'a pas un truk plus simple du genere
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if table1.fieldbyname('prenom').value = 'Morisse' then cellule:= blue;
    By the way, je n'ai toujours pas réussi à trouver une source complete

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut
    Bon OK! Je pose ma question d'une autre façon alors :

    Avec ce 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
    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; 
      Rect: TRect; State: TGridDrawState); 
    var 
      s: String; 
    begin 
      if (ACol = 2) and (ARow = 3) then 
      with Sender as TStringGrid do 
      begin 
        s := Cells[ACol, ARow]; 
        Canvas.Brush.Color := clRed; 
        Canvas.FillRect(Rect); 
        Canvas.Textout(rect.left+3,Rect.top+3,s) ; 
      end; 
    end;
    Les lignes du Dbgrids se re-dessinent toutes seules?
    Y'a l'air que oui, c'est ce que j'ai constaté dans les autres posts du forum!
    Il doit bien y avoir un moment donné ou on affecte quelque chose a quelqun quand meme??
    A part trois heures de recherche non fructueuse et l'envi de balancer l'ordi par la fenetre.... je n'ai pas avancé d'un poil... donc si qulqun a une idée MERCHI

  7. #7
    Membre habitué Avatar de Archibald29
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 112
    Points : 131
    Points
    131
    Par défaut [DBGRID] Colorer une cellule selon condition
    Bonjour,

    Par exemple dans le code suivant, le test est effectué au moment
    du dessin de la colonne de cellules. (DBGDrawColumnCell)
    Le champ à tester est le 18eme s'il contient '1' on colore en jaune
    la cellule la plus à gauche ([0])

    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
     
    ....
    procedure TfrmRdxCoSto.DBGDrawColumnCell
    .....
    IF column.DisplayName='CODE' then
    Begin
      // HAS_REMARk à 1 génére un affichage jaune
      if DBG.Fields[17].Text='1' then
      Begin
      With DBG.Canvas do
        Begin
          if not (gdSelected in state) then
          begin
            Brush.Style:=bsSolid;
            Pen.Style:=psSolid;
            Brush.Color:=clYellow;
            Rectangle(Rect.left,Rect.Top,Rect.Right,Rect.Bottom);
          End;
          //Font.Style:=[fsBold];
          TextOut(rect.left,rect.top,DBG.Fields[0].Text);
        End;
      End;
    End; // Colonne code
    ....
    >>> Essaye encore

  8. #8
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Citation Envoyé par melles
    Supposons que j'ai un DbGrid avec un champs 'Prenom' et que je souhaite colorier toutes les lignes dont la valeur du champs 'Prenom' valent 'Julien'
    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
    procedure TForm1.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
    var
       OldColor: TColor;
    begin
       OldColor := (Sender as TDBGrid).Canvas.Brush.Color;
     
       //.Surligne la ligne sélectionnée.
       if(gdSelected in State) then
       begin
          (Sender as TDBGrid).Canvas.Font.Color := clBlack;
          (Sender as TDBGrid).Canvas.Brush.Color := clSkyBlue;
       end
       else if not (gdFixed in State) then
          (Sender as TDBGrid).Canvas.Brush.Color := OldColor;
     
       //.Si PRENOM = Julien
       if((Sender as TDBGrid).DataSource.DataSet.FieldByName('PRENOM').AsString = 'Julien') and not(gdSelected in State) then
       begin
          (Sender as TDBGrid).Canvas.Brush.Color := clYellow;
          (Sender as TDBGrid).Canvas.Font.Color := clBlack;
       end;
     
       //.Affichage.
       Column.Grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut
    Merci Lung pour ta reponse... je commence à y voir un peu plus clair sauf que ça ne fonctionne pas

    1. Cette procedure se lance automatiquement ou alors il faut l'appeler sur une table donnée??
    2. Comment se fait il que lorsque je clique sur F1 sur DBGridDrawColumnCell l'aide ne me donne rien du tout??
      DBGridDrawColumnCell est considerée comme une procedure?? si c'est le cas, il faut l'appeler, non?
    3. Autre question : a quoi sert le
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      and not(gdSelected in State)

    Thanx in advance

  10. #10
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    c'est un evenement de la dbgrid OnDrawColumnCell

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  11. #11
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Autre question : a quoi sert le and not(gdSelected in State)
    Comme on redessine complétement à la place de la procedure de draw standard, il faut savoir si la ligne est sélectionnée ou non, afin de tracer de façon spéciale la ligne selectionnée (exemple blanc sur fond bleu).
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  12. #12
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Salut melles,

    Au lieu de t'énerver sur certaines choses que tu ne comprends pas et de t'en prendre à la terre entière parce que personne ne se met à ton niveau :
    1) Fait une recherche dans les fichiers d'aide de ton Delphi, on ne va tout de même pas tout te recopier sur le forum.
    2) Ton premier problême est de répondre à la question :
    - c'est quoi un évènement ? (aide de Delphi, recherche sur le forum, merci)
    3) et : - OnDrawCell, ça sert à quoi (aide de Delphi aussi).
    4) Qu'est ce qu'un Canvas, à quoi ça me sert, est ce qu'un DBGrid (par exemple), possède un Canvas ? (Delphi, recherche sur le forum, FAQ)

    Déjà, avec ces lectures patientes, tu auras répondu à pas mal de tes questions : ça sert à rien de se jeter à l'eau sans avoir appris à nager .
    Bidouilleuse Delphi

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut
    Mister Waskol,

    Je n'ai certainement pas 10 ans de natation en club professionel comme toi mais je suis quand meme un minimum motivé et je cherche pas mal avant de poster!

    Tu aurai tres bien pus m'expliquer en deux ligne ce que veut dire un evenement et comment faire pour le trouver et le selectionner!
    Cela m'aurait fait gagner un jour de temps! Et egalement eviter un autre post sur les evenements

    Enfin, tu m'as quand meme bien eclaire sur le mot "evenment" et je t'en remercie mais soit cool avec les nouveaux STP

    C'est excelent ces evenements..... un monde de possibilites s'ouvre à moi

  14. #14
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par melles
    Mister Waskol,
    Je n'ai certainement pas 10 ans de natation en club professionel comme toi mais je suis quand meme un minimum motivé et je cherche pas mal avant de poster!
    ça on a vu que tu étais motivé
    mais soit patient dans ton apprentissage, personne ici n'a appris Delphi en une semaine.
    Je suis assez content de voir que là, tu as pris le temps...
    Citation Envoyé par melles
    Tu aurai tres bien pus m'expliquer en deux ligne ce que veut dire un evenement et comment faire pour le trouver et le selectionner!
    Haaaa mais je l'ai déjà faity mon cher
    Mais tu n'as pas cherché sur le forum si on en parlais ailleurs, des évènements
    Citation Envoyé par melles
    Cela m'aurait fait gagner un jour de temps! Et egalement eviter un autre post sur les evenements

    Si tu savais combien de temps il m'a fallu pour comprendre ce concept...
    Mais sinon, je ne t'ai effectivement rien expliqué sur ce qu'étaient les évènements parce que je ne faisais que supposer que ton incompréhension venait de là... mais ça se trouve, c'était autre chose.
    Citation Envoyé par melles
    Enfin, tu m'as quand meme bien eclaire sur le mot "evenment" et je t'en remercie mais soit cool avec les nouveaux STP
    Pas de problêmes, mais c'est vrai qu'on a senti que tu étais sur les nerfs :
    'en ai un peu marre de tomber sur des truk foireux !!
    Donne moi un lien s'il en existe tant que cela.
    A part trois heures de recherche non fructueuse et l'envi de balancer l'ordi par la fenetre.... je n'ai pas avancé d'un poil...
    ça, en général, on aime pas trop et on se fache très fort...

    C'était mieux de te faire réagir quitte à te fâcher encore plus plutôt que de t'envoyer paître bêtement sans autre explication, non ?
    habituellement je suis plutôt du genre à me plier en 4 pour aider (y'a des témoins ? )
    Citation Envoyé par melles
    C'est excelent ces evenements..... un monde de possibilites s'ouvre à moi
    T'as vu hein ? Génial

    Et n'hésites pas à venir poser tes questions lorsque tu auras besoin d'éclaircissements. Tout le monde est là pour s'entraider.

    Mais par contre, soit patient, nous sommes tous ici bénévoles et nous avons tous une autre vie que DVP : un boulot, des études à assurer, une chère et tendre, des enfants....

    Et c'est donc normal, qu'on prenne du temps : www.developpez.com, n'est pas une priorité, on ne va pas mettre en péril ce qui nous est cher

    C'est donc aussi normal, que, lorsque tu poses une question, tu reçoives ta réponse au fur et à mesure, chacun y investi le temps qu'il peut, quitte à y revenir plus tard, etc...
    Et même des fois, la réponse arrive 3 jour après, ou bien jamais (non pas parce que personne ne souhaite te répondre, mais soit parce que personne ne sait (ça arrive), soit parce que tout le monde est passé à côté ).

    Hé oui, nous ne sommes pas infaillible, on a besoin de temps pour réfléchir, de temps pour répondre, de temps pour être disponible, etc... et là tu l'as vu, nous sommes très loin d'être des usines à code.

    Bienvenue sur le forum Delphi tout de même et bon courage dans ton apprentissage

    Pour info, voici ce que j'ai en réserve depuis presque un an (une réflexion portée sur le forum privé le 23/05/2006 à 23heure) maintenant, qui botte toute l'équipe, mais qu'on a pas forcément le temps de mettre en place (chantier pharaonique).
    Lis le, tu y trouvera ceci :
    - tu vois on pense aussi aux débutants.
    - tu vas comprendre pourquoi les évènements, c'est à la fois simple (une fois qu'on a compris) et compliqué (tant qu'on a pas compris, ou aussi, compliqué à expliquer)
    - Un guide d'apprentissage (on va dire le chapitrage d'un futur bouquin ou méga-tutoriel )

    I/Introduction
    Tout ça part d'une incompréhension qu'on a eu Pascal (Jankowski) et moi-même... juste sur le comment présenter une QR (prérequis du lecteur) ...

    Une grosse réflexion intérieure s'en est suivie, je vous la livre ici.

    En fait, en essayant de me remémorer toutes les étapes que j'ai pu franchir depuis mes premières lignes en BASIC dans les années 80, j'en suis arrivé au constat que, d'une technologie à l'autre en matière de programmation, je me suis heurté aux difficultés suivantes :
    Du PRINT "BONJOUR" aux POKE et PEEK sauvages :
    --> comments les données sont elles représentées en mémoire (notion d'adresse)
    --> Grace à un parallèle avec PEEK et POKE du BASIC je me suis rapidement senti à l'aise avec les pointeurs (en Pascal et C) et leurs opérateur (@ et ^ pour le pascal, * et & pour le C. Je vous assure que le parallèle est immédiat... Si je n'avais pas eu cette référence, j'aurais bien ramé avec les liste chaînées !!!

    Du BASIC au PASCAL :

    --> notion d'unités : "du code dans plusieurs morceaux mais qu'est-ce que ce bins !".
    Les soucis des débutants en Delphi/Pascal sur ce sujet sont par exemple :
    • Comment appeller ma fiche Form2 à partir de ma fiche Form1
    • Problèmes de références circulaires
    --> notions de procédures, fonctions
    Auterement dit la programmation par "blocs", les apppels à ces blocs, etc
    • Passage des paramètres :
      • par référence, par variable
      • paramètres particuliers : pointeurs, tableaux, sans types
    • Pour les procédures elles même :
      • Utiliser un pointeur pour accéder à une procedure, puis...
      • Notion de variable procédurale.
        A noter que cette notion devrait être abordée à ce stade pour faciliter la compréhension des évènements en POO. J'y revient plus loin.
    --> le type énuméré
    --> le type enregistrement
    --> le type ensemble

    De Pascal A Delphi :
    --> Notion de classes avec dans l'ordre d'apprentissage les propriétés, les méthodes, puis le gratin du grand saut, les évènements.
    --> suit ensuite dans une moindre mesure les notions de visibilité (publique, privé, protégé, publié)
    --> l'héritage.
    -->le typecast de classes ou de certaines variables (ex: TColor() )
    --> Enfin, mais pas essentiel pour l'utilisateur lambda, c'est la notion de blocs protégés (try...finally/except...end);

    Les évènements, à partir du moment ou on a compris que c'est une propriété de type variable procédurale, ça devient facile (on ose changer leur nom, on crée ses propres évènements TNotifyEvent, etc...), mais entre temps c'est l'enfer si on est jamais passé par cette case.
    Je trouve que ces la notion la plus difficile à comprendre, en tout cas ça l'a été pour moi, pour les raisons avancées juste avant.

    Ensuite, une fois qu'on a commencé à comprendre comment coder son évènement de base, on peut commencer à toucher aux messages Windows, les callbacks et autres joyeusetés.

    _____________________________________________________________
    II/Voilà où je veux en venir...

    Bon, j'entre pas dans les détails, j'ai même du en oublier, mais nul besoin de préciser que ça correspond au "manque" que tout le monde ressent en matière de tutoriels...
    Je ne pense pas me tromper si je dis que pour vous aussi, parfois, vous vous êtes heurtés à la compréhension de certaines de ces notions.

    Le gros problême dans notre FAQ, c'est que lorsqu'on doit rédiger une QR qui fait appel à l'une ou l'autre de ces notions. Jusqu'où remonter au niveau des explications pour être sur que le lecteur la comprenne bien et l'assimile ?

    Ca pourrait être pas mal de faire, au fil de l'eau, un inventaire "d'apprentissage chronologique" de toutes ces notions qui sont quasi inexplicables en deux lignes, surtout quand nous même on les a intégrées, digérées et assimilées.

    Question : C'est quoi une roue ? Ca sert à quoi ?
    Réponse : Ben, c'est évident !
    Ben non, demandez donc à un homme préhistorique.

    Eleve : Monsieur, j'ai pas compris
    Prof (donnant l'explication classique qui fait avancer le Schmilblick parce que coincer pour donner une explication) :
    Ben, c'est évident !

    etc...
    J'ai souvent remarqué, qu'il était hyper important pour expliquer ces notions, de commencer par donner une explication imagée, même fausse, quitte à revenir dessus un peu plus tard pour rectifier et expliquer le "comment ça marche vraiment".

    Pour info, je vous renvoi à la QR que j'avais écrit sur les pointeurs pour illustration :
    Quid des pointeurs

    j'y raconte plein d'aneries :
    (morceaux choisis)
    • Quand la valeur de l'adresse contenue dans le pointeur est égale à zéro, alors ça se traduit en Delphi par UnPointeur = nil
      Autrement dit nil=0
    • La mémoire, ce sont des "cases"
    • un pointeur est une variable
      ça choque souvent, mais c'est vrai...
    Il y avait eu débat avec Hauwke sur le post à propos du nil=0 où j'étais intervenu à l'époque , et qui a conduit à cette QR :
    http://www.developpez.net/forums/sho...ight=pointeurs

    Bref, c'est un très gros chantier si on veut pouvoir expliquer tout ça clairement et simplement. En plus ça peut facilement être étoffé.

    Sinon, j'ai souvent remarqué :
    - que les cours d'informatiques (Pascal et C) à la FAC ou en école d'ingé n'abordaient JAMAIS cette notion de variable procédurale.
    - que les bouquins sur l'initiation à Delphi, C, etc sont souvent très très mauvais (même ceux réputés très très bons ) puisqu'il brillent souvent par l'absence d'explications sur ces notions. Il tentent suvent d'expliquer par l'exemple d'un petit programme écrit pas à pas (un bouton sur une fiche qui affiche "Hello World") sans vraiment décrire le mécanisme qu'il y a derrière
    - dérouler du code au pas à pas est souvent pratique pour comprendre un mécanisme, surtout en POO, avec les évènements.

    Le seul bon bouquin que j'ai vu pour l'instant (j'en ai pas lu beaucoup en informatique), limpide, clair, c'est le bouquin d'un certain Gérard LEBLANC : Turbo/Borland C++ (Eyrolles je crois).

    C'est une mine d'or pour le développement en MS-DOS, surtout associé à la "Bible du PC".

    Il manque quelque chose d'aussi bon, clair et complet sous windows...
    peut-être de futures QR en perspective

    III/La proposition (enfin)...
    Donc je propose d'ouvrir ici, ou en "sticky" une rubrique consacrée dans un premier temps un inventaire de QR "à faire" qui seraient placées dans une nouvelle catégorie "Notions fondamentales" qui servirait de rappel à tous les visiteurs, débutants ou experts.
    Vici la structure que je propose ainsi que les quelques QR (derniers niveaux de l'arboresences) auquelles j'ai pu penser :
    1. Notions fondamentales pour le Delphiste
      1. Architecture d'un programme Delphi
        1. Application console
          1. Le programme principal (le fichier .dpr)
            Program, Interface, Implementation, Initialization, Finalization
          2. Les unités (fichiers .pas)
            Le fichier .dcu
            Comment eviter les références circulaires
        2. Application Windows
          1. Le programme principal (le fichier .dpr)
            Le fichier de resource .res, l'outil Editeur d'image
          2. Les unités avec fiche associée
            le fichier .dfm
            Comment appeller ma fiche Form2 à partir de ma fiche Form1
          3. Un peu plus loin (fichiers .cfg et .dof)
        3. DLL (Library)
        4. Etc...
      2. Notions fondamentales issues du Pascal
        1. Break/Exit/Continue,Terminate/Halt
        2. Types et structures particulières
          1. Tableaux dynamiques, déclaration et utilisation (SetLength)
          2. Types énumérés
          3. Ensembles
          4. Type enregistrement
          5. Partie variable d'enregistrement
          6. Pointeurs : Mémoire, Adresse, Opérateurs et fonctions, Opérations sur les pointeurs
          7. Transformer un type en un autre :
            En vrac : Typecasting (exemple de TColor() ), utilisation des pointeurs, Type enregistrement avec partie variable, fonction SizeOf, Nombres-->chaînes (ex : fonction Format()), et Chaînes-->Nombres,PChar/String, byte/char/string, ord/chr, fonctions Move et Copy (un rappel à ces fonctions peut servir d'intro aux TStream)
          8. SizeOf avec le type string (différence entre string et string[10]
          9. Variants (variables et tableaux)
          10. Variables entières : manipulations bit à bit avec les opérateurs logiques, shr et shl
          11. Les réels :
            - Erreurs d'arrondi
            - Trunc/round/floor/cell
            - Formattage
          12. TDate/TDateTime (Réel/entier)
            - conversion avec TimeStamp Windows
          13. constantes NAN (not a number), Infinity et NegInfinity
        3. Fonctions et procedures
          1. Passage des paramètres
            1. par référence, par variable
            2. paramètres particuliers : pointeurs, tableaux, sans types, tableaux dynamiques (fonctions Low et High)
            3. Paramètres par défaut
            4. TVarArgs
          2. Mettre une procédure ou une fonction dans une variable :
            1. Utiliser un pointeur pour accéder à une procedure...
            2. Variable procédurales
      3. Notions propres à Delphi (POO)
        1. Classes et Objets
          1. Introduction avec une video de Borland qui explique les Objets et la POO en prenant exemple sur une voiture et un camion (classe dérivée), la couleur de la carosserie (propriétés), la panne d'essence (évènement). Si quelqu'un la retrouve...
          2. les propriétés
          3. les méthodes
          4. 2 types de méthodes particulières (constructeur/ destructeur, Create()/Free)
          5. Les évènements
            (Retour sur les variables procédurales)
          6. Visibilité (publique, privé, protégé, publié)
          7. L'héritage :
            1. Création d'une classe dérivée
            2. Changement de visibilité
            3. Mot-clé Override
            4. retour sur les paramètres des procedure et fonction (Classes virtuelles) :
              - paramètre TStream pour passer un TMemoryStream ou un TFileStream
              -TControl pour TWinControl/TGraphicControl
              -TStrings pour TStringList
          8. Le typecast de classes, opérateurs is et as
          9. Classes particulières
            1. Celles qu'on voit : Qu'est-ce que la VCL ?
            2. Celles qu'on ne voit pas
              1. TPersistent et TComponent
              2. TStreams (TMemoryStream,TFileStream)
              3. TRegistry
              4. TStrings (TStringList)
              5. TControl (TWinControl et TGraphicControl)
                1. Différences entre WinControl et GraphicControl
                2. TColor,TFont,TBrush
                3. TCanvas
                4. TControlCanvas, PaintTo
                5. TBitmap
                  Introduire ScanLine ?
                6. Utiliser TPaintBox
          10. Technique avancées :
            1. ComponentCount, FindComponent
            2. Rendre publique
              une variable privée,une méthode protégée
        2. Blocs de protection (try...finally/except...end)
        3. Création d'évènements (TNotyfyEvent et plus)
          - if Assigned(MaProcedure) then MaProcedure() --> notion d'alias
      4. Delphi et Windows :
        1. API Windows :
          1. Handle, Device Context
          2. Un TWinControl est une fenètre
          3. Fonctions et Procedures liées aux fenètres
          4. TCanvas et Graphisme windows :
            1. TColor et RGB
            2. Polyline,Polygon,Paths, Regions
        2. Les messages : structure d'un message
        3. Callbacks (stdcall)
        4. Création d'évènements Delphi avec les Messages Windows
        5. Déviation de la procédure WindowProc d'un contrôle fenêtré grace à la propriété TControl.WndProc (où l'art de se passer de l'écriture d'une classe descendante)
      5. Assembleur Inline :
        1. Dans quel registre se trouve le paramètre de ma fonction
          Exemple sur les opérateurs bits à bits (j'ai eu une super initiation là-dessus de la part de mon parrain )
        2. Ecriture entre crochets d'une valeur immédiate (Kécecé ? --> mal expliqué dans l'aide delphi)
        3. Etc...
      6. Base de données et Delphi :
        1. L'arborescence fondamentale : (TDatabase-->(TSession-->))TDataSet-->TDataSource-->TDBComponent
        2. TTable
        3. TQuery
        4. méthodes Add,Insert,Edit et Post (y compris avec TQuery)
        5. Locate/Lookup
    Qu'en pensez vous ?
    Merci d'avoir tout lu
    Vraiment, ce serait le pied si on arrivait à ça, mais c'est tellement énorme que je ne sais pas si nous arriverons un jour à y mettre autre chose qu'un simple sommaire
    Bidouilleuse Delphi

  15. #15
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Citation Envoyé par waskol
    c'est tellement énorme que je ne sais pas si nous arriverons un jour à y mettre autre chose qu'un simple sommaire
    Mais si, mais si ... Courage !



    Sinon, ça me parait bien tout ça ...
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  16. #16
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par Lung
    Mais si, mais si ... Courage !



    Sinon, ça me parait bien tout ça ...
    Dans ce cas un coup de mains ne serait pas de refus, on recrute des rédacteurs pour la rubrique
    Bidouilleuse Delphi

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

Discussions similaires

  1. [VBA-A] changer les couleurs dans les listboxes
    Par Jik70 dans le forum VBA Access
    Réponses: 9
    Dernier message: 10/07/2006, 10h26
  2. Réponses: 2
    Dernier message: 03/05/2006, 15h01
  3. [un peu HS , si...si] les gouts et les couleurs
    Par elekis dans le forum OpenGL
    Réponses: 3
    Dernier message: 17/02/2005, 15h05
  4. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45

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