Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TEXTE AU SURVOL DE L'ITEM D'UNE LISTBOX


Description

Cliquez pour voir la capture en taille normale
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

  • 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.
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.

Commentaires et avis

signaler à un administrateur
Commentaire de DelphiCool le 12/10/2003 08:13:57 administrateur CS

J'aprécie la débrouille ;-D

signaler à un administrateur
Commentaire de Don0Choa le 12/10/2003 15:12:16

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 :]

++

signaler à un administrateur
Commentaire de Ryuu le 30/12/2004 10:45:11

Merci ça sert toujours !

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,140 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.