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 :

[Débutant][Composants] StringGrid et ComboBox


Sujet :

Delphi

  1. #1
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut [Débutant][Composants] StringGrid et ComboBox
    Hello

    J'ai vu qu'il était possible avec une DBGrid de faire apparaître un ComboBox lorsqu'on clique dans une case, pour faire apparaître une liste de choix. Est-ce possible également avec une StringGrid ?

    En fait, les choix qui apparaîtront dans ce ComboBox provienne d'une table d'une base de donnée (SGBD : Interbase), est-ce que j'ai meilleur temps d'utiliser une DBGrid ... ?

    Cette table étant très basique : 3 champs, j'en affiche qu'un et je lis les 2 autre par rapport à celui affiché ...
    "L'expérience est le seul livre que les imbéciles savent lire ... !"

    Qui à dit cela ? Moi je n'sais pas !
    Mais en tout cas, je l'applique au pas !

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Voilà ce que j'ai trouvé :
    tu crées ta combo quelque part sur ta form et tu la rends invisible.
    Tu mémorises la cellule sélectionnée :
    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
    begin
    If gdSelected in State Then
    CurrentRect := Rect;
    end;
    (tu as déclaré CurrentRect quelque part avant)

    Ensuite, sur l'évènement qui t'intéresse (j'ai pris DoubleClick), tu fais apparaitre ta combo.
    procedure TForm1.StringGrid1DblClick(Sender: TObject);
    begin
    With ComboBox1 do
    Begin
    Top := StringGrid1.Top + CurrentRect.Top + 2;
    Left := StringGrid1.Left + CurrentRect.Left + 2;
    Width := StringGrid1.Left + (CurrentRect.Right - CurrentRect.Left) - 30;
    Visible := True;
    SetFocus;
    End;
    end;
    Les +2 servent à ne pas écraser le relief
    Le -30 sert à faire rentrer le bouton de la combo, qui n'est pas compté par défaut je crois.

    Et à la sortie de la combo :
    procedure TForm1.ComboBox1Exit(Sender: TObject);
    begin
    ComboBox1.Visible := False;
    StringGrid1.Cells[StringGrid1.Selection.Left,StringGrid1.Selection.Top] := ComboBox1.Text;
    end;

    Tu peux mettre goEditing := False (options de la StringGrid)

    Voilà.
    Si tu veux faire vraiment propre, tu crées un composant qui fait ça (tu dois alors créer ta combo à la main).

  3. #3
    Membre averti Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Points : 346
    Points
    346
    Par défaut
    Bonjour,

    Si les chaînes à afficher dans la grille représentent les valeurs de champs des enregistrements d'un ensemble de données,utilisez TDBGrid.
    [Il était une fois Delphi ....]


  4. #4
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut
    Ok merci beaucoup Remy_delphi pour ton code Je garde précieusement ça !

    Pour ce qui est du choix entre le StringGrid et le DBGrid, je pense pour l'instant m'orienter vers le DBGrid effectivement ... Mais je trouve ça quand même assez compliquer aux premiers abords !

    J'ai plus l'habitude de travailler avec simplement une connexion à la base, l'envoie d'une requête et la récupération des résultats dans un tableau.

    J'avoue être pas mal perdu avec tous les composants à disposition dans Delphi. D'autant plus que mon application doit pouvoir attaquer toute sorte de base de données ! Ce qui me fait hésiter dans chacun de mes choix pour les composants entre ADO, ... !

    Merci à vous deux
    "L'expérience est le seul livre que les imbéciles savent lire ... !"

    Qui à dit cela ? Moi je n'sais pas !
    Mais en tout cas, je l'applique au pas !

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

Discussions similaires

  1. [Débutant] [Delphi6] StringGrid & Picture
    Par Goundy dans le forum Composants VCL
    Réponses: 14
    Dernier message: 27/11/2007, 21h23
  2. [VBA-E] [Débutant] selection dans une combobox
    Par Jerez62 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 07/01/2007, 20h23
  3. Réponses: 23
    Dernier message: 07/02/2006, 08h43
  4. [Débutant] Composant RS232
    Par marchenchuches dans le forum C++Builder
    Réponses: 2
    Dernier message: 21/09/2005, 08h09
  5. Composant StringGrid
    Par jackvpt dans le forum Composants VCL
    Réponses: 6
    Dernier message: 24/04/2005, 19h32

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