IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Nono40.developpez.com
Le petit coin du web de Nono40
SOURCES TESTS DELPHI WIN32 AUTOMATISMES DELPHI .NET QUICK-REPORT
Retour à l'accueil
50 - SYNCHRONISER DEUX LISTBOX

PRÉSENTATION : Synchroniser deux ListBox afin que le premier élément affiché soit le même.
ZIP : Téléchargez le zip APERÇUS :

NOTES : La synchronisation est assurée aussi pour avec l'utilisation de la roulette.

CODE :
Unit Unit1;
//
// Sujet : Synchronier deux ListBox
//
// Par Nono40 : http://nono40.developpez.com   http://nono40.fr.st
//              mailTo:nono40@fr.st
//
// Le 23/03/2003
//

Interface

Uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, AppEvnts, StdCtrls;

Type
  TForm1 = Class(TForm)
    ListBox1: TListBox;
    ListBox2: TListBox;
    ApplicationEvents1: TApplicationEvents;
    Procedure ApplicationEvents1Message(Var Msg: tagMSG;
      Var Handled: Boolean);
    Procedure ListBox1Click(Sender: TObject);
    Procedure ListBox2Click(Sender: TObject);
  Private
    { Déclarations privées }
  Public
    { Déclarations publiques }
  End;

Var
  Form1: TForm1;

Implementation

{$R *.dfm}

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;

End.

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2003 Bruno Guérangé. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.