AGB  ·  Datenschutz  ·  Impressum  







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

TImage auf TPanel, Mausereignisse abfangen?

Ein Thema von soeren · begonnen am 1. Mär 2005 · letzter Beitrag vom 1. Mär 2005
Antwort Antwort
soeren

Registriert seit: 20. Feb 2005
2 Beiträge
 
#1

TImage auf TPanel, Mausereignisse abfangen?

  Alt 1. Mär 2005, 19:25
Ich habe mit Delphi wenig Erfahrung und so meine Schwierigkeiten. Mein Problem: Wenn ich eine eigene Komponente entwickele und ein Image auf ein Panel lege, dann weiß ich nicht, wie ich den Click und MouseDown an das Panel weiterleiten soll. Wenn der Benutzer auf die Komponente klickt, klickt er ja nicht auf das Panel sondern das Image. Wenn ich jetzt für die Komponente die procedure MouseDown überschreibe, dann wird diese procedure nie aufgerufen.
Ich kann zwar im 'CreateWnd' die Anweiseung geben: FImage.OnMouseDown:= OnMouseDown; aber das wirkt sich scheinbar nur auf die vom Benutzer neu geschriebenen OnMouseDown proceduren aus. Nicht aber auf die überschriebenen proceduren der Komponente.

Würde mich über Antworten freuen. Möglichst so deutlich antworten, daß ein Anfänger das versteht.
Danke!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#2

Re: TImage auf TPanel, Mausereignisse abfangen?

  Alt 1. Mär 2005, 19:37
in den Komponenten TPanel und TImage gibt es eine Function, welche die KoOrdinaten umrechnet,

oder du rechnest selber und leitest dann die neuen Koordinaten an's Panel weiter du leitest einfach im OnClick des Images die P

Delphi-Quellcode:
Procedure Form1.ImageOnKlick(Sender; X, Y);
  Begin
    PanelOnClick(Sender, X + Image.Left, Y + Image.Top);
  End;
(das ist nur ein Beispiel, also Namen... müssen noch an dein Programm angepasst wergen)

Aber vom Speicher her wäre es besser, wenn du kein Image verwendest, sondern das Bild im OnPaint-Ereignis der Panels selber (über Panel.Canvas.Draw, oder ähnliches) reinzeichnest und dann gehen sogar alle Klicks gleich ans Panel


[add]
Ach ja ... Herzlich Willkommen bei uns
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
soeren

Registriert seit: 20. Feb 2005
2 Beiträge
 
#3

Re: TImage auf TPanel, Mausereignisse abfangen?

  Alt 1. Mär 2005, 19:46
Danke für die schnelle Antwort - werde ich ausprobieren. Aber eins verstehe ich nicht: Du schreibst, daß ich Panel.canvas etc... benutzen soll. Nur wie komme ich an das Canvas vom Panel? Wenn ich Panel. aufrufe, dann erscheint in der Hilfe allenfalls eine Eigenschaft 'color', aber kein Canvas auf dem ich ein Bitmap oder ähnliches zeichnen könnte.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#4

Re: TImage auf TPanel, Mausereignisse abfangen?

  Alt 1. Mär 2005, 19:51
Also eigenlich müßte ein TPanel auch ein Canvas haben, so als graphisches Objekt ... vieleicht ist es ja irgendwo untergeordnet (was ich aber nicht glaube) ... schau am Besten mal in die OH
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#5

Re: TImage auf TPanel, Mausereignisse abfangen?

  Alt 1. Mär 2005, 20:39
Wenn Du eine eigene Komponente von T(Custom)Panel ableitest, brauchst Du bloss die Eigenschaft Canvas als public zu deklarieren. Sie ist nämlich bereits da, allerdings protected.

Gruß, teebee
  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 01:36 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