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 :

Faire évoluer l'affichage d'une LISTVIEW dans une recherche


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Faire évoluer l'affichage d'une LISTVIEW dans une recherche
    Merci de m'aider, car je netrouve pas la solution contenu de mes
    connaissances.

    Mon probléme:
    j'effectue une recherche dans les captions ou subitems d'une LISTVIEW
    je leur donne le focus selected dés que la recherche aboutie.
    Mais je n'arrive pas à faire évoluer l'affichage automatiquement
    m'obligeant à utiliser la barre de progression dés lors que la ligne
    n'est pas comprise dans la page affichée.

  2. #2
    Expert éminent sénior
    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 : 61
    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
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut,

    Un petit coup de et regarde parmi les méthodes de TListItem celle intitulé MakeVisible.

    @+ Claudius.

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci j'ai fini par trouvé effectivement Makevisible ça marche

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2002
    Messages : 213
    Points : 109
    Points
    109
    Par défaut
    Bonjour, j'ai le même problème!
    J'ai 2 boutons, un pour faire monter et un pour faire descendre les item dans mon listview.
    Quand j'ai fait le up ou le down, j'aimerais pouvoir le faire plusieurs fois d'affilées, malheureusement après le premier click, le listview (et l'item) perd le focus.

    Voici le code que j'utilise pour rendre le focus mais cela ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        LstVwSelectCriteria.SetFocus;
        LstVwSelectCriteria.Selected := LstVwExistingCriteria.Items[ReturnIndex];
        LstVwSelectCriteria.Items[ReturnIndex].MakeVisible(True);
        LstVwSelectCriteria.Items[ReturnIndex].Focused := True;
    Si quelqu'un à une idée, je suis preneur
    Mais quelle bordel !

  5. #5
    Expert éminent sénior
    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 : 61
    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
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut,

    Utilise des TSpeedButton plutôt que des TButton, car les TSpeedButton ne conservent pas le focus après un clic.

    Ce qui devrait résoudre ton problème.

    @+ Claudius.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2002
    Messages : 213
    Points : 109
    Points
    109
    Par défaut
    Il s'agit justement de TSpeedButton
    Mais quelle bordel !

  7. #7
    Expert éminent sénior
    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 : 61
    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
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut,

    je viens d'essayé ce petit bout de code et cela fonctionnement correctement.

    Le TListView est en vsReport comme supposé depuis le début de la conversation.
    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
     
    procedure TForm1.SpeedButtonUpClick(Sender: TObject);
    begin
      with ListView1 do begin
        if ItemIndex > 0 then begin
          ItemIndex := ItemIndex - 1;
          Items[ItemIndex].Focused := True;
          Items[ItemIndex].MakeVisible(False);
        end;
      end;
    end;
     
    procedure TForm1.SpeedButtonDownClick(Sender: TObject);
    begin
      with ListView1 do begin
        if ItemIndex < Items.Count - 1 then begin
          ItemIndex := ItemIndex + 1;
          Items[ItemIndex].Focused := True;
          Items[ItemIndex].MakeVisible(False);
        end;
      end;
    end;
    Teste ce code et tiens nous au courant,
    @+ Claudius

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2002
    Messages : 213
    Points : 109
    Points
    109
    Par défaut
    Très bizarrement, ca a fonctionné à moitié mais ... ca ne fonctionne plus!
    Je n'ai pourtant rien changé qui me semble vital

    Voici mon 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    procedure TFrmColis.BtnCritDownClick(Sender: TObject);
    var
      oList : Variant;
      ReturnIndex : Integer;  
    begin
      if LstVwSelectCriteria.Selected = nil then Exit;
      ReturnIndex := MoveCrit('DOWN');
      if (ReturnIndex = 0) or (ReturnIndex = StrToInt(LstVwSelectCriteria.Selected.SubItems.Strings[5])) then
      else
      begin
        oList := oRoot.GetListCrit;
        FillSelectCriteria(oList);
        LstVwSelectCriteria.Items[ReturnIndex].Focused := True;
        LstVwSelectCriteria.Items[ReturnIndex].MakeVisible(False);
        CompObj.RootUpdated;
        GetError;
      end;
    end;
     
    procedure TFrmColis.BtnCritUpClick(Sender: TObject);
    var
      oList : Variant;
      ReturnIndex : Integer;
    begin
      if LstVwSelectCriteria.Selected = nil then Exit;
      ReturnIndex := MoveCrit('UP');
      if (ReturnIndex = 0) or (ReturnIndex = StrToInt(LstVwSelectCriteria.Selected.SubItems.Strings[5])) then
      else
      begin
        oList := oRoot.GetListCrit;
        FillSelectCriteria(oList);
        LstVwSelectCriteria.Items[ReturnIndex].Focused := True;
        LstVwSelectCriteria.Items[ReturnIndex].MakeVisible(False);
        CompObj.RootUpdated;
        GetError;
      end;
    end;
    La Variant est une interaction avec le server Caché d'Intersystem
    Mais quelle bordel !

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2002
    Messages : 213
    Points : 109
    Points
    109
    Par défaut
    En persévérant un peu, ca fonctionne parfaitement maintenant

    Il fallait rajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LstVwSelectCriteria.Items[ReturnIndex].Selected := True;
    ce qui nous donnes le code suivant :
    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
    36
    37
    38
    39
    procedure TFrmColis.BtnCritDownClick(Sender: TObject);
    var
      oList : Variant;
      ReturnIndex : Integer;  
    begin
      if LstVwSelectCriteria.Selected = nil then Exit;
      ReturnIndex := MoveCrit('DOWN');
      if (ReturnIndex = 0) or (ReturnIndex = StrToInt(LstVwSelectCriteria.Selected.SubItems.Strings[5])) then
      else
      begin
        oList := oRoot.GetListCrit;
        FillSelectCriteria(oList);
        LstVwSelectCriteria.Items[ReturnIndex].Focused := True;
       LstVwSelectCriteria.Items[ReturnIndex].Selected := True;
        LstVwSelectCriteria.Items[ReturnIndex].MakeVisible(False);
        CompObj.RootUpdated;
        GetError;
      end;
    end;
    procedure TFrmColis.BtnCritUpClick(Sender: TObject);
    var
      oList : Variant;
      ReturnIndex : Integer;
    begin
      if LstVwSelectCriteria.Selected = nil then Exit;
      ReturnIndex := MoveCrit('UP');
      if (ReturnIndex = 0) or (ReturnIndex = StrToInt(LstVwSelectCriteria.Selected.SubItems.Strings[5])) then
      else
      begin
        oList := oRoot.GetListCrit;
        FillSelectCriteria(oList);
        LstVwSelectCriteria.Items[ReturnIndex].Focused := True;
       LstVwSelectCriteria.Items[ReturnIndex].Selected := True;    
        LstVwSelectCriteria.Items[ReturnIndex].MakeVisible(False);
        CompObj.RootUpdated;
        GetError;
      end;
    end;
    Merci pour votre aide
    Mais quelle bordel !

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

Discussions similaires

  1. [Débutant] Mettre une listBox dans une colonne d'une listView
    Par Tom57300 dans le forum VB.NET
    Réponses: 1
    Dernier message: 23/04/2014, 15h40
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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