AGB  ·  Datenschutz  ·  Impressum  







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

Event wird nicht ausgelöst ?!

Ein Thema von ghost007 · begonnen am 18. Jul 2008 · letzter Beitrag vom 19. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#1

Event wird nicht ausgelöst ?!

  Alt 18. Jul 2008, 13:17
Hallo,

ich wollte mir eine eigenen kleine komponente basteln.
Hierfür bin ich nach dem tutorial von dsdt vorgegangen (Link: http://www.delphi-treff.de/tutorials...en-entwicklen/)

Meine unit schaut wie folgt aus:
Delphi-Quellcode:
unit ClipBoarder;

interface

uses
  SysUtils, Classes, Messages, Windows;

type
  TChangeEvent = procedure(Sender : TObject ) of Object;
  TClipBoarder = class(TComponent)
  private
    CChangeEvent: TChangeEvent;
    procedure ClipChange(var content: TMessage); message WM_DRAWCLIPBOARD;
    { Private declarations }
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    property OnChange : TChangeEvent read CChangeEvent write CChangeEvent;
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Clipboarder', [TClipBoarder]);
end;

procedure TClipBoarder.ClipChange(var content: TMessage);
begin
 OnChange(self);
end;

end.
Wenn ich die kompo dann auf eine forum zieh und im onchange z.b.
 ShowMessage('changed'); mache, dann passiert nichts.

Was mach ich falsch?

MfG - Ghost007
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Event wird nicht ausgelöst ?!

  Alt 18. Jul 2008, 13:29
Moin Christian,

das funktioniert nicht, weil die Message nur an die Fenster geschickt wird, die sich als Clipboardviewer registriert haben.
Schau Dir mal die Doku dazu im MSDN an (MSDN-Library durchsuchenWM_DRAWCLIPBOARD)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#3

Re: Event wird nicht ausgelöst ?!

  Alt 18. Jul 2008, 15:04
Zitat von Christian Seehase:
Moin Christian,

das funktioniert nicht, weil die Message nur an die Fenster geschickt wird, die sich als Clipboardviewer registriert haben.
Schau Dir mal die Doku dazu im MSDN an (MSDN-Library durchsuchenWM_DRAWCLIPBOARD)
Hey,
dafür sorge ich schon im form create event der form über folgenden befehl:

 SetClipboardViewer(self.Handle); MfG - Ghost007

P.S.: Das event wird trotzdem nicht ausgelöst.
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Event wird nicht ausgelöst ?!

  Alt 18. Jul 2008, 15:08
Moin!

Überschreib lieber CreateWnd um auch das neuerstellen deines Formulars im Hintergrund durch VCL Properties mit zu bekommen. Ich vermute eher, dass dein im FormCreate registrierte Fensterhandle gar nicht mehr gültig ist.

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von ralfschwalbe
ralfschwalbe

Registriert seit: 19. Jul 2007
Ort: Lichtenstein/Sachsen
133 Beiträge
 
Delphi XE3 Professional
 
#5

Re: Event wird nicht ausgelöst ?!

  Alt 18. Jul 2008, 15:12
Hallo,

du setz dein Form als Clipboardviewer hast aber dein Change-Event in einer Componente. So geht das nicht. Entweder alles im Form oder wie Muetze1 geschrieben hat, in der Compo...
Ralf Schwalbe
viele Grüße...
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#6

Re: Event wird nicht ausgelöst ?!

  Alt 18. Jul 2008, 15:12
Zitat von Muetze1:
Moin!

Überschreib lieber CreateWnd um auch das neuerstellen deines Formulars im Hintergrund durch VCL Properties mit zu bekommen. Ich vermute eher, dass dein im FormCreate registrierte Fensterhandle gar nicht mehr gültig ist.

MfG
Muetze1
Hm,
das komisch ist nur, wenn ich das ganze ohne komponente mach, sprich die auslöser procedure einfach in die normale form unit reinklatsche, geht es
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Event wird nicht ausgelöst ?!

  Alt 18. Jul 2008, 15:19
Moin!

Sorry, hatte dein Beitrag nicht richtig verarbeitet. Durch deine Aussage mit der Komponente wurde mir dies klar, ich dachte du implementierst es in einem Formular.

Zu dem Problem: Die VCL empfängt die Botschaften auf dem Fenster aber sie leitet nicht alle an ihre Clients weiter. Dies macht sie nur mit besonderen Botschaften, manche werden sogar explizit von der VCL zu den internen Notifier (CN_XXX) oder Messages (CM_XXX) umgesetzt. Deine Botschaft gehört mit zu den nicht weiter geleiteten.

Lösung: Bau dir eine Komponente mit eigenem Fensterhandle und dann bekommst du die Botschaft direkt. Also Leite von TWinControl ab und registriere dich in deiner Komponente selbst als Empfänger und dann bekommst du auch die Botschaft.

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#8

Re: Event wird nicht ausgelöst ?!

  Alt 18. Jul 2008, 15:24
Zitat von Muetze1:
Bau dir eine Komponente mit eigenem Fensterhandle und dann bekommst du die Botschaft direkt. Also Leite von TWinControl ab und registriere dich in deiner Komponente selbst als Empfänger und dann bekommst du auch die Botschaft.
Bleibt nur eine frage, wie registriere ich mich als empfänger?

MfG - Ghost007

//Edit: Oder meinst du mit registrieren, das einklicken in die clipboardviewer chain ?
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Event wird nicht ausgelöst ?!

  Alt 18. Jul 2008, 15:42
Ich glaube dir fehlt noch das Verständnis.

Mit
SetClipboardViewer(self.Handle); Sagst du das Self.Handle eine Message bekommen soll. Self.Handle ist aber in diesem Fall dein Form da Self ja für die Instanz des Forms steht und dieses bekommt die Nachricht auch.

Wenn du willst das deine Komponente die Nachricht bekommt darfst du nicht das Handle des Forms angeben sondern musst ein Handle übergeben welches zu deiner Komponente gehört.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#10

Re: Event wird nicht ausgelöst ?!

  Alt 18. Jul 2008, 15:58
Das hab ich spätestens nach dem beitrag von Muetze1 schon verstanden, nur welches handle geb ich der funktion dann ?
Ist meine erste kompo kenne mich damit noch nicht so aus

MfG - Ghost007
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  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 17:17 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