1 pièce(s) jointe(s)
TStringGrid et TButton dans une cellule - Event Onclick
Bonjour,
Après un changement de PC juste avant le confinement, je me remets à Delphi après une longue absence sur cet environnement :P
Version de Delphi : 10.3.3 Rio Version Community.
Dans une StringGrid, j'essaie d'insérer un bouton dans une cellule ... Tout se passe bien : le bouton est visible dans la cellule concernée et réagit à la souris. Mais ... bien que j'ai affecté l'événement Onclick du bouton, celui-ci n'est jamais déclenché.
Si j'active l'événement OnClick de la StringGrid, il est actif dans la cellule du bouton uniquement si je clique dans la cellule mais en dehors du bouton .
Je pense que j'ai dû me planter quelque part mais je n'arrive pas à voir où ... ni pourquoi l'événement n'est pas déclenché !
Pour le moment, le test est réalisé en VCL.
Le code ... Il n'est certainement pas top mais c'est pour faire quelques tests ...:oops:
Code:
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
unit Unit4;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.StdCtrls;
type
TForm4 = class(TForm)
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure StringGrid1Click(Sender: TObject);
private
{ Déclarations privées }
public
procedure BOUTON_CLICK(Sender : TObject);
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
procedure TForm4.BOUTON_CLICK(Sender: TObject);
begin
Showmessage('CLIC BOUTON');
end;
procedure TForm4.FormCreate(Sender: TObject);
var
Bouton : TButton;
Rect : TRect;
begin
Rect := StringGrid1.CellRect(2,2);
Bouton := Tbutton.Create(nil);
Bouton.Parent := StringGrid1;
Bouton.Top := Rect.Top + 3;
Bouton.Left := Rect.Left + 3;
Bouton.Height := Rect.Bottom - Rect.Top - 10;
Bouton.Width := Rect.Right - Rect.Left - 10;
Bouton.Caption := 'BOUTON';
Bouton.Style := bsPushButton;
Bouton.Enabled := True;
Bouton.Visible := True;
Bouton.OnClick := BOUTON_CLICK;
StringGrid1.Objects[2,2] := Bouton;
end;
procedure TForm4.StringGrid1Click(Sender: TObject);
begin
Showmessage('CLIC STRINGGRID');
end;
end. |
La copie d'écran de la StringGrid où on voit bien le bouton présent pouvant être cliqué ...
Pièce jointe 555756
Si quelqu'un a une idée je suis preneur ... Je n'ai rien trouvé sur le net : ou alors j'ai mal cherché :oops::oops::(
Par avance merci.
Cdt
Laurent