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 !

Sujet : Problème de dll [ Archives / J'AI BESOIN D'AIDE !!!! :O ] (orelien)

jeudi 9 février 2006 à 16:11:32 | Problème de dll

orelien

Bonjour,

J'ai un problème de fonctionnement avec une dll qui a pour but très "basique" de souligner ou non un TLabel en fonction de la position de la souris (onMouseEnter ou onMouseLeave). J'utilise alors la propriété font.style du TLabel pour lui attribuer ou non la spécificité [fsunderline ou lui retirer].

Le bug se produit alors losque je désire fermer la fenêtre après avoir fait fonctionner les deux évènements du TLabel. A noter que le bug ne se produit pas si je désire par exemple modifier le caption du TLabel ou sa couleur à la place de son aspect souligné.

Voici le code :

fichier projet :

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

procedure lien_enter(Sender: TObject); StdCall; external 'dll\Project1.dll' name 'lien_enter';
procedure lien_leave(Sender: TObject); StdCall; external 'dll\Project1.dll' name 'lien_leave';

implementation

{$R *.dfm}

procedure TForm1.Label1MouseEnter(Sender: TObject);
begin
   lien_enter(Sender);
end;

procedure TForm1.Label1MouseLeave(Sender: TObject);
begin
   lien_leave(Sender);
end;


fichier dll :

library Project1;

uses
  Windows, Controls, StdCtrls, SysUtils, Classes, Graphics;

{$R *.RES}

procedure lien_enter(Sender: TObject); StdCall;
begin
   TLabel(Sender).Font.Style := [fsUnderline];
end;

procedure lien_leave(Sender: TObject); StdCall;
begin
   TLabel(Sender).Font.Style := [];
end;

exports
lien_enter, lien_leave;

begin

end.


Message d'erreur :

1er : L'instruction à"0x004284bb"" emploie l'adresse mémoire "0x00000000". La mémoire ne peut pas être "read".
2ème : Exception EAccessViolation dans le module Project1.exe dans 000284BB. etc...


Si quelqu'un peut m'aider...
Merci

Orélien.


samedi 11 février 2006 à 23:03:24 | Shotgun on a mouche volante

grandvizir

Réponse acceptée !

Je vois bien ce que tu veux faire : c'est violent.

Le plus simple (et le plus propre) est d'exploiter CM_MOUSELEAVE et CM_MOUSEENTER. C'est d'ailleurs ce que tu fais indirectement.

A moins que tu veuilles travailler sur des handles. Dans ce cas, transformer TLabel en TStatic.

Bref, la solution n'est pas miraculeuse. Elle est simple et pas prise de tête : on n'utilise pas de DLL pour ce genre de trucs. J'en vois pas l'intérêt... autant développer un composant CLASS.

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls ;
type
  TForm1 = class(TForm)
    Label1: TLabel;
  private
    procedure Highlight(Sender:TObject);
    procedure UnHighlight(Sender:TObject);
  end;
var Form1 : TForm1;
implementation
{$R *.dfm}
  procedure TForm1.Highlight(Sender: TObject);
  begin
    (Sender as TLabel).Font.Style:=[fsUnderline];
  end;
  procedure TForm1.UnHighlight(Sender: TObject);
  begin
    (Sender as TLabel).Font.Style:=[];
  end;
end.

Ainsi, sur chacun de tes labels, avec l'inspecteur d'objets, tu feras converger les propriétés OnMouseEnter et OnMouseLeave sur Highlight et UnHighlight.

Evite de faire :   TLabel(Sender).Machin
Préfère :            (Sender as TLabel).Machin
Pourquoi ?
      Ca génèrera une exception si ton Sender n'est pas TLabel.
Question propreté.

Ou alors, c'est un problème de convention d'appel. Essaye de remplacer STDCALL par FAR.

C'est l'architecture de la stratégie qui bat de l'aile.



=============
Validez les réponses si ok...

ViewVite XP : HTML




Cette discussion est classé dans : end, dll, lien, sender, tlabel


Répondre à ce message

Sujets en rapport avec ce message

Problème Econversion Error lors de l'affichage d'une info bulle dans une fenetre MDIChild dans une DLL [ par DarkSky ] Salut a tous,j'ai créer un projet MDI avec Delphi 6 donc les fenetre MDi Filles sont dans une DLL.j'ai une erreur EConversionError a la place de l'aff TNotifyEvent [ par apz ] Salut, en executant ce code j'ai eu le code d'ereur suivant : Types incompatibles : 'TnotifyEvent' et 'procedure, untyped pointer or untyped parameter "Incompatible types :''Cardinal' and 'String' " [ par Don0Choa ] Bonjour, je fais un petit prog permettant de fair des boite de dialogue en séléctionnant les bouttons, icones etc...Mais voila j'ai une erreur comem d Newbie & TCPI/IP [ par Megafan ] Bonjour je suis complétement débutant en delphi, par contre je suis pas mauvais en VB.Pourquoi je change allez vous dire ?Parce que VB ne tourne pas s probleme avec sockets [ par PsyClown44 ] Salut!J'ai un prob avec le composant TClientSocket : je n'arrive pas a recevoir de paquets lors d'une connexion!Voila le code:unit Unit1;interfaceuses Comment ajouter des param. à l'appel d'une DLL [ par Pierrotmad ] J'ai un prog qui appelle une dll que j'ai réalisé . Dans la dll, j'ai un champ texte, disons pour l'exemple EdtChemin.text . J'aimerai mettre en param pb a creer un exe avec la principal form invisible [ par Winniez ] J'ai voulu au demarrage de exe afficher une autre form que la form principal. a l'execution sa me met une erreur, apres g mis le meme code dans un bou Récupérer les données de zones Edit d'une autre appli [ par Prog59 ] Bonjour,J'ai une appli qui contient des Edit et je voudrai récupérer les données des Edit dans un fichier txt.J'ai repris le prg de DelphiProg concern Form dans une dll mIRC [ par Delirium ] Je suis en train de faire ma première source en Delphi pour me familiariser avec ce language, et je créer une dll pour mIRC.Je voudrais afficher une F String, DLL et exportation de classe [ par Bilou972 ] Voici une chose que j'aurai du faire il y deja bien longtemps, je suis en bts info deuxieme annee, l examen approche et je suis toujours bloqué sur l'


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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,468 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é.