AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TImage um Eigenschaften und Ereignissen erweitern
Thema durchsuchen
Ansicht
Themen-Optionen

TImage um Eigenschaften und Ereignissen erweitern

Ein Thema von bluescreen25 · begonnen am 8. Jan 2006 · letzter Beitrag vom 9. Jan 2006
Antwort Antwort
Seite 1 von 2  1 2      
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#1

TImage um Eigenschaften und Ereignissen erweitern

  Alt 8. Jan 2006, 13:21
Hallo,
ich möchte gerne TImages als z.B. Buttons einsetzen. Es fehlen aber bei TImage die Ereignisse OnMouseOver oder auch die Möglichkeit über die Tabtaste ein TImage "einzufangen".

Ich habe einige Beiträge dazu gelesen, aber bin noch nicht soweit, Ableitungen und Erweiterungen zu erstellen. Kann da jemand helfen ?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: TImage um Eigenschaften und Ereignissen erweitern

  Alt 8. Jan 2006, 13:29
über die Tabtaste wirst du TImage nie erreischen da es ein TControl ist und kein handle hat wie ein TWinControl.
Für OnMouseOver musst du die entsprechenden messages abfangen (CM_MOUSEENTER und CM_MOUSELEAVE)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: TImage um Eigenschaften und Ereignissen erweitern

  Alt 8. Jan 2006, 13:48
Zitat von SirThornberry:
über die Tabtaste wirst du TImage nie erreischen da es ein TControl ist und kein handle hat wie ein TWinControl.
Für OnMouseOver musst du die entsprechenden messages abfangen (CM_MOUSEENTER und CM_MOUSELEAVE)
ich schrieb, das ich noch nicht ganz so weit bin.(eher noch Anfänger).
Also geht es gar nicht darum, das TImage neu zu definieren, um global die neuen Ereignisse zu haben?


Bitte gib doch mal ein Beispiel für das Abfangen der Messages, wie man diese dann global verwenden kann.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: TImage um Eigenschaften und Ereignissen erweitern

  Alt 8. Jan 2006, 13:53
ein Beispiel für die Messages hatte ich erstmal weg gelassen da ich dachte das es sich vielleicht schon erledigt hat das problem weil das TImage nie den Focus bekommen kann (per Tab etc.)

Beispiel:
Delphi-Quellcode:
type
  TImage = class(ExtCtrls.TImage)
  private
    procedure FCMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
    procedure FCMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;
  end;
[...]
procedure TImage.FCMMouseEnter(var Msg: TMessage);
begin
  //Was soll passieren wenn die maus drüber kommt
  //Beispiel: Laden eines andere Bildes
  Picture.LoadFromFile('BildMausDrüber');
end;

procedure TImage.FCMMouseLeave(var Msg: TMessage);
begin
  //Was soll passieren wenn die maus weg geht
  //Beispiel: Laden eines andere Bildes
  Picture.LoadFromFile('BildMausAußerhalb');
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: TImage um Eigenschaften und Ereignissen erweitern

  Alt 8. Jan 2006, 14:15
Zitat von SirThornberry:
ein Beispiel für die Messages hatte ich erstmal weg gelassen da ich dachte das es sich vielleicht schon erledigt hat das problem weil das TImage nie den Focus bekommen kann (per Tab etc.)

Danke schön, das mit dem Focus ist nicht ganz so wichtig wäre aber schön gewesen; werde Einiges über Shortcuts festlegen, sozusagen als Alternative.

Es ist eh eine Software,welche ich im Auto als CARPC einsetzen möchte (Navi,MP3 etc).
Da muss ich eh noch schaun, wie man ausser Maus,Shortcuts noch eine Alternative zur Bedienung finde.

Mir schwebt da so ein PowerMate vor, dazu muss ich eh noch so eine Art Focus erzeugen, da man ja nur einen Drehknopf und eine Druckmöglichkeit hat.
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: TImage um Eigenschaften und Ereignissen erweitern

  Alt 9. Jan 2006, 17:43
Zitat von SirThornberry:
ein Beispiel für die Messages hatte ich erstmal weg gelassen da ich dachte das es sich vielleicht schon erledigt hat das problem weil das TImage nie den Focus bekommen kann (per Tab etc.)

Beispiel:
Delphi-Quellcode:
type
  TImage = class(ExtCtrls.TImage)
  private
    procedure FCMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
    procedure FCMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;
  end;
[...]
procedure TImage.FCMMouseEnter(var Msg: TMessage);
begin
  //Was soll passieren wenn die maus drüber kommt
  //Beispiel: Laden eines andere Bildes
  Picture.LoadFromFile('BildMausDrüber');
end;

procedure TImage.FCMMouseLeave(var Msg: TMessage);
begin
  //Was soll passieren wenn die maus weg geht
  //Beispiel: Laden eines andere Bildes
  Picture.LoadFromFile('BildMausAußerhalb');
end;
Nun habe ich alle Timages mit dem gleichen Inhalt. Wie bekomme ich dies bei nur bestimmten hin ?
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#7

Re: TImage um Eigenschaften und Ereignissen erweitern

  Alt 9. Jan 2006, 17:52
Du musst eigene Events deklarieren und sie dann in der Botschaftsmethode auslösen. Beispiele dazu findest du im Forum und in den VCL-Sourcen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: TImage um Eigenschaften und Ereignissen erweitern

  Alt 9. Jan 2006, 17:58
Zitat von Khabarakh:
Du musst eigene Events deklarieren und sie dann in der Botschaftsmethode auslösen. Beispiele dazu findest du im Forum und in den VCL-Sourcen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: TImage um Eigenschaften und Ereignissen erweitern

  Alt 9. Jan 2006, 18:01
Hallo bluescreen,

verstehst du das?

Delphi-Quellcode:
type
  TBetterImage = class(TImage)
  private
    FOnMouseEnter: TNotifyEvent;
    FOnMouseLeave: TNotifyEvent;
    procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;
  public
    property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
    property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
  end;

implementation

procedure TBetterImage.CMMouseEnter(var Msg: TMessage);
begin
  if Assigned(FOnMouseEnter) then
    FOnMouseEnter(Self);
end;

procedure TBetterImage.CMMouseLeave(var Msg: TMessage);
begin
  if Assigned(FOnMouseLeave) then
    FOnMouseLeave(Self);
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: TImage um Eigenschaften und Ereignissen erweitern

  Alt 9. Jan 2006, 18:10
Zitat von marabu:
Hallo bluescreen,

verstehst du das?

Delphi-Quellcode:
type
  TBetterImage = class(TImage)
  private
    FOnMouseEnter: TNotifyEvent;
    FOnMouseLeave: TNotifyEvent;
    procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;
  public
    property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
    property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
  end;

implementation

procedure TBetterImage.CMMouseEnter(var Msg: TMessage);
begin
  if Assigned(FOnMouseEnter) then
    FOnMouseEnter(Self);
end;

procedure TBetterImage.CMMouseLeave(var Msg: TMessage);
begin
  if Assigned(FOnMouseLeave) then
    FOnMouseLeave(Self);
end;
Grüße vom marabu
Ohje, nicht so ganz, nur das eine Klasse von TImage abgeleitet wurde,richtig? und die Nachrichten vom ONMouseEnter,OnMouseLeave abgefangen werden , was aber die procedure genau macht nicht.

Mein Problem war, das ich eine Form mit diversen Images hatte und eine einfache Unit mit der Ableitung von Timage. Diese bekam ich aber nicht mit den Images der Form verbunden, oder wenn, dann wurde alles von TImage gleich verarbeitet, nur sollte ein selbst erstellter Button das machen und mein Hintergrund natürlich nicht....

Leider noch nicht so ganz verständlich...sorry
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:30 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