Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Ein Ereignis in der eigenen Klasse erstellen
mimi - Mi 09.07.03 20:03
Titel: Ein Ereignis in der eigenen Klasse erstellen
Hallo,
ich wollte ein einges ereignis auslösen aber wie mache ich das? ich habe mir für fmod ein sound klasse gebastelt und nun möchte ich wenn eine neue musik geladen wird soll das ereignis onNewMusik ausgelöst werden wie mache ich das ?
(bitte mit beispien antworten, danke)
Moderiert von
Tino: Titel geändert & Topic verschoben.
AndyB - Mi 09.07.03 21:38
Delphi-Quelltext
1: 2: 3:
| FOnNewMusik: TNotifyEvent;
if Assigned(FOnNewMusik) then FOnNewMusik(Self); |
Wenn ich mich aber recht entsinne rufst du NewMusik in einem Thread auf. Das Ereignis solltest du deswegen mit dem Hauptthread synchronisieren -> Synchronize
mimi - Mi 09.07.03 21:42
ne um das thema geht es jetzt nicht mehr, ich wollte mir zwei ereignis erstellen die ich dann in der sokubahn unit verwenden könnten, damit ich den threht auf pause schalten kann.
ps:
wo ist eingetlich das f oder das t da ?
AndyB - Mi 09.07.03 21:47
Beide gehören groß geschrieben.
Das T ist bei Borland wie das C bei Microsoft.
VC++:
Delphi:
Es steht für
Type und wird auch bei records benutzt.
Das
F steht für
Field und sollte laut
Object Pascal Style Guide [
http://community.borland.com/soapbox/techvoyage/article/1,1795,10280,00.html] der Prefix für alle Felder in einer Klasse sein. Die Eigenschaften (property) habe dann keinen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| TTest = class private FMyField: Integer; public property MyField: Integer read FMyField write FMyField; end; |
ErnestoChe - Mi 09.07.03 22:03
Hallo mimi,
hab Dir mal auf die Schnelle eine kleine Komponente geschrieben. Diese habe ich von TEdit abgeleitet und hierfür ein Ereignis namens
OnPressEnter geschrieben. Dieses wird ausgelöst, wenn Du in diesem Edit die
Enter-Taste drückst:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70:
| unit MyEdit;
interface
uses Windows, Messages, SysUtils, Classes, Controls, StdCtrls;
type TMyEdit = class(TEdit) private FOnPressEnter: TNotifyEvent; protected procedure KeyPress(var Key: Char); override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; published property OnPressEnter: TNotifyEvent read FOnPressEnter write FOnPressEnter; end;
procedure Register;
implementation
constructor TMyEdit.Create(AOwner: TComponent); begin inherited Create(AOwner); end;
destructor TMyEdit.Destroy; begin
inherited Destroy; end;
procedure TMyEdit.KeyPress(var Key: Char); begin inherited; if assigned(FOnPressEnter) then if Key = #13 then begin Key := #0; FOnPressEnter(Self); end; Invalidate; end;
procedure Register; begin RegisterComponents('MyComponents', [TMyEdit]); end;
end.
procedure TForm1.MyEdit1PressEnter(Sender: TObject); begin caption := 'hello world'; end; |
Habe es auch getestet. Es funktioniert. Hoffe das hilft Dir weiter.
MFG
- Ernesto -
// Edit: Falls du Probleme hast dein Topic zu ändern, es muss heissen:
Eigenes Ereignis in eigener Klasse. Hey, nicht böse sein, war nur Spass :wink: Aber Keldorn hat nicht Unrecht. Wenigsten der Topic sollte korrekt sein, damit andere auch das Thema finden.
mimi - Mi 09.07.03 22:31
@ErnestoChe
danke das du dir die mühe gemacht hast, werde ich mir morgen anschauen und testen, eingentlich wollte ich keine komponente machen, sondern nur eine einfache klasse, die auch nirgendswo abgeleitet wird oder so.....
@AndyB
achso, wusste ich garnicht ich schreibe bei record immer das t davor aber den grund weiß ich garnicht.....
ErnestoChe - Mi 09.07.03 22:40
Hi mimi,
| mimi hat folgendes geschrieben: |
| eingentlich wollte ich keine komponente machen, sondern nur eine einfache klasse, die auch nirgendswo abgeleitet wird oder so.... |
Das macht nichts. Das Prinzip ist das gleiche. Dann machst du die
property einfach aus
published raus und nimmst es unter
public auf.
MFG
- Ernesto -
mimi - Mi 09.07.03 23:10
Danke! werde ich morgen mal testen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!