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 :

[Turbo Delphi Explorer] Dériver un TDBGrid


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Pierre Maurette
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 283
    Par défaut [Turbo Delphi Explorer] Dériver un TDBGrid
    Bonjour,
    Je souhaite utiliser un TDBGrid sans scrollbar verticale. Je tourne en rond autour du lien http://bdn.borland.com/article/15874
    Pas moyen de parvenir à quoi que ce soit, peut-être à cause de mon incompétence dans le domaine, sans doute à cause de la limitation de la version Explorer quant à l'ajout de composants.
    Comment puis-je procéder, sachant que:
    - je n'ai pas vraiment besoin d'un vrai nouveau composant, mais ce ne serait pas mal non plus.
    - je voudrais utiliser le concepteur de fiche, mais la suppression de la scrollbar peut intervenir à la construction ou au runtime.
    - je veux bien ajouter un bout de code dans chaque unité où le problème se pose, voire éditer le .dfm ou tout autre fichier.

    Voilà, je vous remercie pour toute suggestion, et n'hésitez pas à m'expliquer comme à un neuneu ;-)

    Bonne journée,

    Pierre

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut,

    J'ai trouvé ceci on ze Web

    Tu créés un descendant de TDBgrid en runtime qui intercepte le message WM_NCCALCSIZE et le tour est joué.

    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
     
    type
      TNoScrollDBGrid = class(TDBGrid)
      private
        procedure WMNCCalcSize(var Msg: TMessage);
          message WM_NCCALCSIZE;
      end;
     
    procedure TNoScrollDBGrid.WMNCCalcSize(var Msg: TMessage);
    const
      Scrollstyles = WS_VSCROLL {or WS_HSCROLL};
    var
      Style: Integer;
    begin
      Style := GetWindowLong(Handle, GWL_STYLE);
      if (Style and Scrollstyles) <> 0 then
        SetWindowLong(Handle, GWL_STYLE, Style and not Scrollstyles);
      inherited;
    end;
    @+ Claudius

  3. #3
    Membre chevronné Avatar de Pierre Maurette
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 283
    Par défaut
    Merci à Claudius40. Qui n'a visiblement pas lu la question et me renvoie du code dont j'avais donné le lien.

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Citation Envoyé par Pierre Maurette
    Merci à Claudius40. Qui n'a visiblement pas lu la question et me renvoie du code dont j'avais donné le lien.

    Ooops ! Tout à l'heure je n'arrivais pas à accéder au BDN. Navré de ce impair.

    Mais ce code ne réponds pas à ta demande ? Aurais-je mal compris ?

  5. #5
    Membre chevronné Avatar de Pierre Maurette
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 283
    Par défaut
    Citation Envoyé par Claudius40
    Mais ce code ne réponds pas à ta demande ? Aurais-je mal compris ?
    Si j'ai bien compris, ce qui n'est pas prouvé: c'est le code d'un composant. Je ne peux créer ni ajouter à la palette aucun nouveau composant avec les versions Explorer. De plus, je souhaite garder la notion de composant pour la conception (j'utilise des champs persistants). Donc, peut-être utiliser un TDBGrid normal et le modifier (juste pour la scrollbar) au runtime ou à la compilation ? Mais je ne sais pas le faire.

  6. #6
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Re,

    Je vais essayé de me rattraper

    Ce code supprime le scrollbar vertical au runtime.

    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
     
    type
      TForm1 = class(TForm)
        DBGrid1: TDBGrid;
        [...]
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
        FOldWindowProc: TWndMethod;
        procedure DBGridWindowProc(var Message: TMessage);
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      FOldWindowProc := DBGrid1.WindowProc;
      DBGrid1.WindowProc := DBGridWindowProc;
    end;
     
    procedure TForm1.DBGridWindowProc(var Message: TMessage);
    begin
      if Message.Msg = WM_PAINT then
        ShowScrollBar(DBGrid1.Handle, SB_VERT, False);
      FOldWindowProc(Message);
    end;
     
    end.
    @+ Claudius

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

Discussions similaires

  1. JVCL & turbo delphi explorer
    Par AP dans le forum Delphi
    Réponses: 6
    Dernier message: 07/05/2007, 22h29
  2. Aide de Turbo Delphi Explorer et Vista
    Par claude bataille dans le forum Delphi
    Réponses: 20
    Dernier message: 23/03/2007, 22h11
  3. [Turbo C++ Explorer] Dériver un TDBGrid
    Par Pierre Maurette dans le forum C++Builder
    Réponses: 1
    Dernier message: 23/11/2006, 12h55
  4. Turbo Delphi Explorer - Diagramme de classe Complet
    Par Argonz dans le forum Delphi
    Réponses: 3
    Dernier message: 03/11/2006, 18h25
  5. Turbo Delphi Explorer, dbExpress et mySQL
    Par Pierre Maurette dans le forum Bases de données
    Réponses: 1
    Dernier message: 01/10/2006, 13h34

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