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 :

Question sur un XStringGrid


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 139
    Par défaut Question sur un XStringGrid
    Bonjour à tous,
    Comment faire sur une XStringGrid qui contient x colonnes pour protéger 1 colonne précise en écriture ? Les autres étant ouverte en écriture...
    Merci
    a+

  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

    Je ne connais pas ce composant, mais si il dérive d'un TStringGrid tu dois avoir accès à l'évènement OnSelectCell qui te permettra d'accepter/interdire la sélection d'une cellule d'une colonne particulière.

    Dans le cas contraire il existe certainement un évènement ou propriété similaire.

    @+ Claudius

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 139
    Par défaut
    "l'évènement OnSelectCell qui te permettra d'accepter/interdire la sélection d'une cellule d'une colonne particulière"

    Comment fais-tu pour interdire ou accepter la sélection d'une cellule d'une colonne ?

    Je change avec true / false la valeur de CanSelect mais ça ne marche pô...

  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
    Re,

    Un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TForm1.XStringGrid1SelectCell(Sender: TObject; Col, Row: Longint; var CanSelect: Boolean);
    begin
      CanSelect := (Col > 0);
    end;
    Ceci interdit la sélection des cellules de la 1° colonne.

    @+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 139
    Par défaut
    je n'y arrive pas.
    voici mon événement OnSelectCell :

    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
     
    procedure XStringGrid1SelectCell(Sender: TObject; ACol,
      ARow: Integer; var CanSelect: Boolean);
    var
      i : integer;
      str1, str2 : string;
    begin
      if(ACol = -1)then
        exit;
      for i := 0 to XStringGrid1.ColCount-1 do
       begin
         str1 := StrReplace(' ', '', XStringGrid1.Cells[ACol,0]);
         str2 := StrReplace(' ', '', tab[i].name);
         if(str1 = str2) then
          begin
             if(tab[i].read_only = 1)then
              begin
                CanSelect := (ACol > 0);
                break;
              end
             else
              begin
                CanSelect := not (ACol > 0);
                break;
              end;
          end;
       end;
    end;
    j'ai essayé de mettre directement true ou false dans le CanSelect mais je peux toujours sélectionner ma cellule et y saisir des infos...

  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
    Salut

    J'ai du mal à saisir ce que fait ton code.

    Je pense que le problème viens du fait que tu fais une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      for i := 0 to XStringGrid1.ColCount-1 do
    Cette boucle est-elle nécessaire ? Ne suffit-il pas de comparer la cellule en question (ACol) avec Tab[ACol].ReadOnly ?

    @+ Claudius

Discussions similaires

  1. [debutant] Questions sur 1 futur projet
    Par cyrull22 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/04/2003, 21h49
  2. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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