Synchroniser deux listbox

Description

Voici une méthode pour synchroniser deux ListBox. J'entend par synchroniser, que le premier élément affiché sur chaque ListBox ait le même numéro.

Si je ne suis pas clair, essayez l'exemple contenu dans le zip...

Source / Exemple :


procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  // Il faut intercepter les messages de la roulette
  // pour déplacer la deuxième ListBox
  If (Msg.Message=WM_MOUSEWHEEL)And(Screen.ActiveForm=Form1)
  Then Begin
    If ActiveControl=ListBox1 Then SendMessage(ListBox2.Handle,WM_MOUSEWHEEL,MSG.wParam,MSG.lParam);
    If ActiveControl=ListBox2 Then SendMessage(ListBox1.Handle,WM_MOUSEWHEEL,MSG.wParam,MSG.lParam);
  End;
  // Il faut aussi intercepter les messages reçus sur les barres
  // de défilement.
  If ((Msg.Message=WM_NCLBUTTONDOWN)Or(Msg.Message=WM_NCMOUSEMOVE))
      And(Screen.ActiveForm=Form1)
  Then Begin
    If ActiveControl=ListBox1 Then ListBox2.TopIndex:=ListBox1.TopIndex;
    If ActiveControl=ListBox2 Then ListBox1.TopIndex:=ListBox2.TopIndex;
  End;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  // Ici c'est pour les synchronisation quand ItemIndex change
  ListBox2.TopIndex:=ListBox1.TopIndex;
end;

procedure TForm1.ListBox2Click(Sender: TObject);
begin
  // Ici c'est pour les synchronisation quand ItemIndex change
  ListBox1.TopIndex:=ListBox2.TopIndex;
end;

Conclusion :


Cette source et quelques autres sur : http://nono40.developpez.com

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.