AGB  ·  Datenschutz  ·  Impressum  







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

Eigenes OnClick-Event

Ein Thema von Andreas L. · begonnen am 20. Jul 2007 · letzter Beitrag vom 20. Jul 2007
Antwort Antwort
Andreas L.
(Gast)

n/a Beiträge
 
#1

Eigenes OnClick-Event

  Alt 20. Jul 2007, 16:47
Hi,
bin gerade dabei ein OnClick-Event meiner Komponente zu implementieren. Dummerweise weiß ich nicht, welche Message ich brauche. Hab CM_CLICK probiert, die gibts aber anscheinend nicht. Auch nach einer halben Stunde suchen in Coontrols.pas weiß ich nicht weiter. Hier mal ein paar Zeilen Code:

Delphi-Quellcode:
...
 private
    fOnClick: TNotifyEvent;
    procedure CMClick(var Message: TMessage); message CM_CLICK; //CM_CLICK gibts net
...
...
 published
    property OnClick: TNotifyEvent read fOnClick write fOnClick;
...
...
procedure TCubeNavigationButton.CMClick(var Message: TMessage);
begin

 if not Active then
  begin

   fActive := True;
   Color := fActiveBarColor;
   fButtonShape.Pen.Color := fActiveBorderColor;
   fButtonShape.Brush.Color := fActiveButtonColor;
   fCaptionLabel.Font.Assign(fActiveButtonFont);
   fGlyphImage.Picture.Assign(fGlyphActive);

  end;

 if assigned(fOnClick) then
  begin

   fOnClick(Self);

  end;

end;
Welche Message brauch ich?

EDIT: Wenn ich BN_CLICKED verwende, meldet der Compiler: "[Pascal Fehler] CubeNavigationButton.pas(55): E2139 Ungültiger Botschaftsmethoden-Index"
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Eigenes OnClick-Event

  Alt 20. Jul 2007, 16:53
Hi,

Wovon hast du es denn abgeleitet? Bestimmt reicht es, im published-Abschnitt property OnClick; einzufügen (eigentlich schon bei beliebigen TControl-Nachfahren). Und das wären alle visuellen Komponenten. Es ist eben nur protected und muss erst noch published - veröffentlicht - werden.

Mfg
FAlter
Felix Alter
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#3

Re: Eigenes OnClick-Event

  Alt 20. Jul 2007, 16:54
Zitat von FAlter:
Hi,

Wovon hast du es denn abgeleitet? Bestimmt reicht es, im published-Abschnitt property OnClick; einzufügen (eigentlich schon bei beliebigen TControl-Nachfahren). Und das wären alle visuellen Komponenten. Es ist eben nur protected und muss erst noch published - veröffentlicht - werden.

Mfg
FAlter
Von TCustomPanel. Aber es geht darum, im OnClick noch etwas auszuführen bevor User's Code ausgeführt wird.
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Eigenes OnClick-Event

  Alt 20. Jul 2007, 16:57
Hi,

dann mach es so:

Delphi-Quellcode:
  ...
  protected
    procedure Click; override; //ist als dynamic gekennzeichnet
  ...

procedure TMyComponent.Click;
begin
  //Hier dein Code - vorher
  inherited;
  //Hier dein Code - nachher
end;
Mfg
FAlter

[edit]Genau diese Empfehlung gibt es in der OH: Delphi-Referenz durchsuchenTControl.Click Überschreiben, wenn mehr gertan werden soll.[/edit]
Felix Alter
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#5

Re: Eigenes OnClick-Event

  Alt 20. Jul 2007, 17:48
Wenn ich es so mache wird bei einem Klick mein Code nicht ausgeführt und der User hat außerdem im OI kein OnClick-Eregnis...
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Eigenes OnClick-Event

  Alt 20. Jul 2007, 18:06
1. hast du denn nun im published Abschnitt property OnClick; hinzugefügt?
2. Wo steht denn nun dein Code (der nun nicht mehr ausgeführt wird)? vor dem Inherited in der oben genannten Click Methode?
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#7

Re: Eigenes OnClick-Event

  Alt 20. Jul 2007, 18:37
Zitat von Muetze1:
1. hast du denn nun im published Abschnitt property OnClick; hinzugefügt?
2. Wo steht denn nun dein Code (der nun nicht mehr ausgeführt wird)? vor dem Inherited in der oben genannten Click Methode?
1. Wenn ich die property deklariere meldet der Compiler: "[Pascal Fehler] CubeNavigationButton.pas(69): E2174 'Click' wurde vorher nicht als PROPERTY deklariert"

2. Vor dem inherited
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Eigenes OnClick-Event

  Alt 20. Jul 2007, 18:57
Hi,

1. es heißt nicht property Click sondern property OnClick, aber procedure Click [edit] und override nicht vergessen [/edit]
2. Das funktioniert (siehe Anhang), getestet mit D7Pers, also hast du meine Anweisungen nicht richtig gelesen.

Mfg
FAlter
Angehängte Dateien
Dateityp: zip paneltest_369.zip (3,2 KB, 44x aufgerufen)
Felix Alter
  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 13:39 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