AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TImage --> OnMouseLeave

Ein Thema von Störtebeker · begonnen am 20. Aug 2007 · letzter Beitrag vom 21. Aug 2007
Antwort Antwort
Benutzerbild von Störtebeker
Störtebeker

Registriert seit: 9. Jul 2007
398 Beiträge
 
#1

TImage --> OnMouseLeave

  Alt 20. Aug 2007, 23:13
Hallo,

ich hatte mir zufällig irgendwo die WINDOWS Vista Caption Button runtergeladen - einmal "Active" & "Inactive" - und dachte mir, die zusammen mit bsNone in mein Projekt mit einzubinden.

ABER:

TImage bietet mir leider ledeglich ein OnMouseMove und kein OnMouseLeave Ereignis an. Folgendes hatte ich eigentlich vor:

Ich setzt auf die Form das "Inactive" Bild und gebe dem OnMouseMove Ereignis den Befehl das Bild in das "Active"-Bild zu wechseln. Aber es muss natürlich auch rückwürkend funktinieren, da ja der Button bei WINDOWS auch nicht immer aktiv is, wenn man einmal mit der Maus drüberfährt. Kennt Ihr ne kostenlose Image-Komponente, die PNG unterstützt und ein "vorgefertigtes" OnMouseLeave Ereignis hat?

Wenn nicht, vielleicht könnt Ihr mir helfen, dem normalen TImage das Ereignis schmackhaft zu machen.

Ach ja ... hätte ich fast vergessen:

Was muss ich denn für einen Imagewechsel dem Ereignis zuweisen:

Delphi-Quellcode:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
TImage1.load=("....PNG");
end;

end.
Der Quellcode ist bestimmt falsch in seiner Art, oder?

Thx.

mfG
Störtebeker

P.S.: Hoffe, der Text ist nicht allzukompliziert.
"And he piled upon the whale´s white hump - a sum of all the rage and hate felt by his whole race.
If his chest had been a cannon, he would have shot his heart upon it."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: TImage --> OnMouseLeave

  Alt 20. Aug 2007, 23:18
Und wieder schlägt ganz unerwartet und überraschend die Suche zu: http://www.delphipraxis.net/internal...ghlight=timage
Den Bug habe ich mittlerweile behoben. Der Code ist allerdings in der Firma. Da komme ich frühstens am Donnerstag dran.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Störtebeker
Störtebeker

Registriert seit: 9. Jul 2007
398 Beiträge
 
#3

Re: TImage --> OnMouseLeave

  Alt 20. Aug 2007, 23:29
Also, irgendwie lässt sich das Teil nicht installieren.

Delphi kommt dann immer mit:

Zitat:
Error in module Unit1: Declaration of class TForm1 is missing or incorrect.
Muss sagen, dass ich den Quelltext einfach kopiert habe. Gibt es einen bestimmten Punkt, wo ich das Ding einsetzen muss?
"And he piled upon the whale´s white hump - a sum of all the rage and hate felt by his whole race.
If his chest had been a cannon, he would have shot his heart upon it."
  Mit Zitat antworten Zitat
Benutzerbild von Störtebeker
Störtebeker

Registriert seit: 9. Jul 2007
398 Beiträge
 
#4

Re: TImage --> OnMouseLeave

  Alt 21. Aug 2007, 10:55
Habe mal in der Suche weiter gesucht und einen code von den Schweizern gefunden:

Delphi-Quellcode:
{
Folgende unit ist eine visuelle Komponente abgeleitet von TImage, welche
zusätzlich die 2 Ereignisse OnMouseEnter und OnMouseLeave beinhaltet.
}


{
The following unit is a visual component inherited of TImage, which has the
2 additional events OnMouseEnter and OnMouseLeave.
}


unit ImageEx;

interface

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

type
  TImageEx = class (TImage)
  private
    { Private declarations }
    FOnMouseLeave: TNotifyEvent;
    FOnMouseEnter: TNotifyEvent;
    procedure CMMouseEnter(var msg: TMessage);
      message CM_MOUSEENTER;
    procedure CMMouseLeave(var msg: TMessage);
      message CM_MOUSELEAVE;
  protected
    { Protected declarations }
    procedure DoMouseEnter; dynamic;
    procedure DoMouseLeave; dynamic;
  public
    { Public declarations }
  published
    { Published declarations }
    property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
    property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Additional', [TImageEx]);
end;

{ TImageEx }

procedure TImageEx.CMMouseEnter(var msg: TMessage);
begin
  DoMouseEnter;
end;

procedure TImageEx.CMMouseLeave(var msg: TMessage);
begin
  DoMouseLeave;
end;

procedure TImageEx.DoMouseEnter;
begin
  if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
end;

procedure TImageEx.DoMouseLeave;
begin
  if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;

end.
Copyright © by SwissDelphiCenter.ch


kommt Delphi auch mit:
Zitat:
Error in module Unit1: Declaration of class TForm1 is missing or incorrect.
Ändere ich den Quelltext folgendermaßen: Füge unter Types: Form1 = class (TForm) hinzu:

Delphi-Quellcode:
{
Folgende unit ist eine visuelle Komponente abgeleitet von TImage, welche
zusätzlich die 2 Ereignisse OnMouseEnter und OnMouseLeave beinhaltet.
}


{
The following unit is a visual component inherited of TImage, which has the
2 additional events OnMouseEnter and OnMouseLeave.
}


unit ImageEx;

interface

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

type
  Form1 = class (TForm)
  TImageEx = class (TImage)
  private
    { Private declarations }
    FOnMouseLeave: TNotifyEvent;
    FOnMouseEnter: TNotifyEvent;
    procedure CMMouseEnter(var msg: TMessage);
      message CM_MOUSEENTER;
    procedure CMMouseLeave(var msg: TMessage);
      message CM_MOUSELEAVE;
  protected
    { Protected declarations }
    procedure DoMouseEnter; dynamic;
    procedure DoMouseLeave; dynamic;
  public
    { Public declarations }
  published
    { Published declarations }
    property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
    property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Additional', [TImageEx]);
end;

{ TImageEx }

procedure TImageEx.CMMouseEnter(var msg: TMessage);
begin
  DoMouseEnter;
end;

procedure TImageEx.CMMouseLeave(var msg: TMessage);
begin
  DoMouseLeave;
end;

procedure TImageEx.DoMouseEnter;
begin
  if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
end;

procedure TImageEx.DoMouseLeave;
begin
  if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;

end.
meckert Delphi im Bereich "TImageEx = class (TImage)" mit:
Zitat:
Expected ':' but '=' found
und ich weiß zum einen nicht, was Delphi jetzt von mir will, weil ein = ist ja da und wo das : hin muss sagt Delphi mir ja auch nicht und des weiteren bin ich mir auch nicht ganz sicher, ob ich jetzt einfach ein neues Dokument öffnen kann und dahin den Code einfach kopieren kann. Weil ich habe nicht ganz so viel Ahnung, vom Einbinden von aus dem Internet stammenden Units, ging bisher alles über Komponente installieren, aber da es sich ja nicht um eine neue Komponente handelt, sondern ledeglich um eine Erweiterung.

mfG
Störtebeker
"And he piled upon the whale´s white hump - a sum of all the rage and hate felt by his whole race.
If his chest had been a cannon, he would have shot his heart upon it."
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: TImage --> OnMouseLeave

  Alt 21. Aug 2007, 11:14
Zitat:
Error in module Unit1
Wieso änderst Du dann die Unit ImageEx?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Störtebeker
Störtebeker

Registriert seit: 9. Jul 2007
398 Beiträge
 
#6

Re: TImage --> OnMouseLeave

  Alt 21. Aug 2007, 11:26
Naja, ich muss doch den Queeltext irgendwie in mein Delphi integrieren. Und ich dachte halt ich öffne ne neue Unit --> Unit1 und kopiere dahin den Text. Wie gesagt, ich habe noch nicht soviel Erfahrung mit dem Einfügen von "fremden" Units.

Wie muss ich das denn machen?
"And he piled upon the whale´s white hump - a sum of all the rage and hate felt by his whole race.
If his chest had been a cannon, he would have shot his heart upon it."
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: TImage --> OnMouseLeave

  Alt 21. Aug 2007, 11:44
Hallo Störtebecker,

die unit Forms kannst Du möglicherweise entfernen (wenn nicht eine benutzte Eigenschaft diese benötigt). Dann müsstest Du vermutlich den Ordner der Unit Forms sicher noch in die zu durchsuchenden Ordner aufnehmen, damit der Compiler diese Unit auch findet...

Nach Deiner Deklaration von Form1 fehlt ein Semikolon. Diese Deklaration ist aber ohnehin unnötig.

Die Komponente kannst Du dann in Deinem Projekt zur Laufzeit erzeugen. Um sie in die IDE einzufügen musst Du sie installieren. In der Prozedur "Register" steht, wo sie dann aufzufinden ist.


Stahli

Nachtrag:
Hab in der Eile übersehen:
"Error in module Unit1: Declaration of class TForm1 is missing or incorrect."
Muß wohl aus Deiner eigenen Unit stammen - nicht aus der ImageEx...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz