Drag Drop

Hnimsgern Messages postés 48 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 4 mars 2005 - 14 janv. 2004 à 13:55
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 16 janv. 2004 à 20:52
Le code suivant provient de l'héritage du composant Tbutton.le dragdrop ne fonctionne plus lorsque je rajoute un composant TImage et déclare son parent. Est-ce normal? Comment alors pouvoir faire fonctionner le dragdrop? type
TzButton = class(TButton) { Déclarations privées }
Image:Timage;
protected
{ Déclarations protégées }
public
{ Déclarations publiques }
destructor Destroy; override;
constructor Create(AOwner: TComponent); override;
published
{ Déclarations publiées }
end;

procedure Register;

implementation
{-----------------------------------------------}
procedure Register;
begin
RegisterComponents('Mes Composants', [TzButton]);
end;
{-----------------------------------------------}
constructor TzButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Image:=Timage.Create(self);
// Image.Parent:=self; //PB ici

end;
{-----------------------------------------------}

HN

6 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
15 janv. 2004 à 20:46
Comme la réponse était un peu longue, alors je l'ai publiée sur mon site : voir la réponse.
Mais, quel est le rapport avec le Drag'n drop dans le titre ?
May Delphi be with you
0
Hnimsgern Messages postés 48 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 4 mars 2005
16 janv. 2004 à 09:16
Merçi pour ta réponse.
En fait je me suis mal expliqué.

Le problème est que lorsque l'on déclare une image parent d'un bouton ou d'un TCustomControl, les évènements DragDrop et DragOver sur ce bouton ne se déclenchent plus (même si aucune image n'est chargée ou dessinée).

J' ai donc utilisé, pour dessiner, directement le cavenas du composant à la place d'une image. Dans ce cas les évènements DragDrop et DragOver sur ce bouton déclenchent correctement.

HN
0
yoghisan Messages postés 204 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 2 juin 2005 1
16 janv. 2004 à 11:09
Heu delphiprog, il y a un probleme dans ton composant, auquel apparemment tu as pensé mais pas complete, je le dis donc pour ceux qui liront cette question.

on ne clique pas sur le bouton quand on clique sur l'image verte du bouton. Dephiprog a crée l'evenement mais ne l'a pas surchargé...
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
16 janv. 2004 à 13:03
Que Nenni ! : regarde bien le code du constructeur.
Le traitement appliqué à un clic sur l'image est le même que celui du bouton.
Mais, si tu veux distinguer les deux actions, alors c'est sur qu'il faut modifier un peu.
May Delphi be with you
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yoghisan Messages postés 204 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 2 juin 2005 1
16 janv. 2004 à 20:19
Je suis d'accord que le fait de cliquer sur l'image ou sur le bouton, on a le clignotement.

Cependant, quand on clique sur l'image, il se passe rien (mise a part le clignotement) alors que l'on pourrait esperer que l'on clique sur le bouton... C'est de ca que je parlais (voir exemple)

procedure TForm1.FormCreate(Sender: TObject);
var
  zButton: TzButton;
begin
  zButton := TzButton.Create(Self);
  with zButton do
  begin
    //Name := 'zButton1';
    Parent := Self;
    Left := 80;
    Top := 80;
    Width := 75;
    Height := 25;
    //Caption := 'zButton1';
    TabOrder := 0;
    OnMouseDown := zButton1MouseDown;
  end;
end;

procedure TForm1.zButton1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  showmessage('J''ai appuyé sur le zbouton...');
end;


Je suis peut etre plus clair, la (je rejoinds ce que tu dis).
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
16 janv. 2004 à 20:52
Alors, nous sommes d'accord.
Mais le code à écrire pour réagir à un clic sur l'image est alors écrit dans le code de la fiche Form1 et non dans celui du code du composant TzButton.
Bon, maintenant que Hnimsgern a trouvé la solution, on va peut-être s'arrêter là.
Merci à vous deux pour votre participation constructive.
May Delphi be with you
0
Rejoignez-nous