Texte au survol de l'item d'une listbox

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 358 fois - Téléchargée 27 fois

Contenu du snippet

Ce petit code (que je qualifirais plus d'astuce) permet de faire apparaitre un texte au survol d'un item grace à l'évènement OnMouseMove et à une Stringlist.
Chaque item à son texte biensure... Ca peut être utile pour faire un ASV au survol pour un chat par exemple...

Source / Exemple :


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Buttons;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    ListBox1: TListBox;
    SpeedButton1: TSpeedButton;
    Panel2: TPanel;
    Edit1: TEdit;
    Edit2: TEdit;
    Panel3: TPanel;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  com:Tstringlist;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
com:=TStringlist.Create;// Création de la stringlist contenant les commentaires

end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
listbox1.Items.Add(Edit1.Text);//On ajoute le texte qui va apparaitre
com.Add(edit2.Text);//Et le commentaire qui lui correspond
end;

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  var
  i:integer;
 begin
i:=Y div Listbox1.ItemHeight;// I:= La position du curseur en Hauteur divisé par la hauteur d'un item
//Donc i= le numéro de l'item survolé.

if i>listbox1.Count-1 then begin
Panel3.hide;
 exit         //Pour ne pas créer d'erreur si i ne correspond à aucun item
end else begin //Si c bon alors on positionne le panel
Panel3.Left:=x-20;
Panel3.Top:=y-10;
Panel3.Caption:=' '+com.Strings[i]+' ';// LE texte du panel sera le commentaire correspondant à l'item
Label1.Caption:=ListBox1.Items[i]+' : '+com.Strings[i];
Panel3.Show;
end end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
com.Free;
end;

end.

A voir également

Ajouter un commentaire

Commentaires

DelphiCool
Messages postés
462
Date d'inscription
mardi 24 juillet 2001
Statut
Modérateur
Dernière intervention
10 mars 2009
-
J'aprécie la débrouille ;-D
Don0Choa
Messages postés
104
Date d'inscription
dimanche 29 octobre 2000
Statut
Membre
Dernière intervention
12 décembre 2005
-
bah de toute façon je pense pas qu'il y est 36 manières de le faire ...
mais y doit bien y en avoir une plus propre :]

++
cs_Ryuu
Messages postés
1
Date d'inscription
jeudi 2 octobre 2003
Statut
Membre
Dernière intervention
30 décembre 2004
-
Merci ça sert toujours !

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.