AGB  ·  Datenschutz  ·  Impressum  







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

Wozu TNotifyEvent oder TEvent?

Ein Thema von Arnulf · begonnen am 12. Dez 2005 · letzter Beitrag vom 14. Dez 2005
Antwort Antwort
Seite 1 von 2  1 2      
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#1

Wozu TNotifyEvent oder TEvent?

  Alt 12. Dez 2005, 21:32
Hi
Ich beschäftige mich grad mit threads, events und windows messages.
Jetzt stell ich mir die Frage wozu ist ein TNotifyEvent gut?

Von dem Methoden ist mir klar man kann hald mit waitforsingleobjekt darauf warten aber viel mehr, als das setzen einer boolean variable ist das doch eigentlich auch nicht oder?.

Wozu wird das also verwendet? - die Frage stell ich mir eigentlich.
Arnulf
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.640 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Wozu TNotifyEvent oder TEvent?

  Alt 12. Dez 2005, 21:36
Ein TNotifyEvent ist einfach Ereignistyp folgender Form:

procedure (Sender : TObject) of object Wo genau liegt den Dein Problem?
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Wozu TNotifyEvent oder TEvent?

  Alt 12. Dez 2005, 21:38
Hi,

Delphi-Referenz durchsuchenTNotifyEvent wird hauptsächlich in der Delphi Komponenten und Klassentwicklung im Zusammenhang mit Benachrichtungen bzw. Ereignissen verwendet. Beispielsweise übergibt der Benutzer eine Prozedur, die der Deklaration von TNotifyEvent entsprecht, an das Objekt weiter, damit dieses bei bestimmten Ereignissen den Nutzercode aufrufen kann.
Welchen Zusammenhang Du da beschreibst, verstehe ich jedoch nicht...

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#4

Re: Wozu TNotifyEvent oder TEvent?

  Alt 12. Dez 2005, 21:47
Naja eigentlich ist es genau das was ich machen will.
Aber ganz verstehen tu ich es nicht.
Ich möchte ein event für ein objekt generieren.
In meinem fall ein OnProgressBar - hier soll der bentzer einfach seine prozedur aufrufen können die eine ProgressBar weiterschiebt. Übergeben bekommt er nur den fortschritt in form eines integers.

Ich versteh einfach den ganzen zusammenhang nicht.
Ich kann doch einfach das OnProgressBar als prozedur in mein objekt einfügen, und der user kann doch von dort aus seine Progress Bar weiterschieben.

Ich bekomm einfach gedanklich die kurfe nicht, deshalb hab ich gehofft jemand erklärt mir wozu das genau gut ist.

Danke
Arnulf
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.640 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Wozu TNotifyEvent oder TEvent?

  Alt 12. Dez 2005, 21:52
Es gibt zwei Richtungen.

1. der Benutzer/das Programm möchte die Position des Progressbar von Hand setzen
Dies hat nix mit Events zu tun
Du setzt einfach den Progress-Wert

2. Die Progressbat möchte Dir mitteilen, wie der Fortschritt gerade steht.
Du registrierst Dich bei der ProgressBar für das OnProgressBar -Event
indem Du der Eigenschaft OnProgressBar eine Funktion mit dem entsprechenden Aufbau zuweist - z.B. eine TNotifyEvent-Methode
Sven Harazim
--
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#6

Re: Wozu TNotifyEvent oder TEvent?

  Alt 12. Dez 2005, 21:59
eher nr 2

Ok ich werd mal spezieller genau mein beispiel hald - und warum ich mich frag wozu das genau gut ist.
Ich hab einen thread laufen der eine video abspielt.
jetzt möchte ich eine ProgressBar im Hauptprogramm weiterschieben.
Bisher übergeb ich einfach die absolute position indem ich vom Thread aus mit Syncronize die ProgressBar Procedur aufrufe.

Wenn ich das allerdings jetzt in ein objekt oder ein component kapseln will, dann wäre doch eine OnProgressBar methode am bessten.
Aber wozu brauch ich ein Event, wenn ich doch sowieso vom Thread aus die Prozedur aufrufen kann bzw. muß.
Was ich bisher verstanden hab, geht es nur darum, daß der user meines objekts den pointer auf seine eigene prozedur umleiten kann - oder wie jetzt???

Noch hat es nicht klick gemacht tut leid

Arnulf
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.640 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Wozu TNotifyEvent oder TEvent?

  Alt 12. Dez 2005, 22:17
alles etwas wirr

Bisher übergeb ich einfach die absolute position indem ich vom Thread aus mit Syncronize die ProgressBar Procedur aufrufe. Das funktionier ohne Events.

Wenn ich es richtig verstanden habe, möchtest Du die OnProgressBar-Methode in ein eigenes Objekt packen. Gut, geht auch.

was soll den in der OnProgressBar passieren?

Die Position der Bar setzt Du ja schon im Thread.
Sven Harazim
--
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#8

Re: Wozu TNotifyEvent oder TEvent?

  Alt 12. Dez 2005, 23:19
Naja gedacht ist das eigentlich als Video Player objekt ohne GUI.
Also das GUI kann jeder selbst programmieren.

Deshalb möchte ich ja von dem Thread aus ein ProgressBar.Progress und ein ProgressBar.Max in absoluten zahlen also sekunden übergeben.
Das sollen ja nur methoden sein mit der man dann seine eigene Progress Bar in das Programm einbauen kann.
Der Thread kümmert sich ja nur ums abspielen und liefert infos bzw. hald events die von einer Progressbar benötigt werden.

Ich würde das ganze hald letzten endes gerne als component programmieren, deshalb schau ich mich bei allen methoden die etwas damit zu tun haben einmal um.
Und darum frag ich mich hald auch wozu ist TNotifyEvent den wirklich da?

Deshalb klingt das:
Zitat:
TNotifyEvent wird hauptsächlich in der Delphi Komponenten und Klassentwicklung im Zusammenhang mit Benachrichtungen bzw. Ereignissen verwendet. Beispielsweise übergibt der Benutzer eine Prozedur, die der Deklaration von TNotifyEvent entsprecht, an das Objekt weiter, damit dieses bei bestimmten Ereignissen den Nutzercode aufrufen kann.
ja auch sehr interessant, aber sowas ähnliches steht ja schon in der Delphi hilfe nur verstehen tu ichs hald nicht.

Arnulf
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Wozu TNotifyEvent oder TEvent?

  Alt 13. Dez 2005, 09:32
Hi Arnulf,
es ist doch so, dass die Komponente völlig unabhängig von deiner Applikation agieren soll.
Also soll sie von einer ProgressBar gar nichts wissen. Kann ja sein, der Entwickler benutzt eine ganz andere, nicht von TProgressBar abgeleitete Komponente. Also soll er darüber informiert werden, wann die Progressbar neu gezeichnet werden soll.
Delphi-Quellcode:
unit Unit2;

interface
uses
  Classes;

type
  TMyVideoObject = class(TComponent)
  private
    FOnProgressBarPosChange: TNotifyEvent;
    FProgressBarPos: Integer;
    FProgressBarSteps: Integer;
    procedure doProgressBarPosChange;
  published
    // nur Lesen Property zum Setzen der PB
    property ProgressBarPos: Integer read FProgressBarPos;
    // Max - Wert der Progressbar, also - setze ich auf 100, so muss meine Komponente
    // das Ereignis insgesamt 100 mal auflösen
    property ProgressBarSteps: Integer read FProgressBarSteps write
        FProgressBarSteps;
    // mein Event, welches der Entwickler per OI setzen kann
    // damit er die PB weiter setzen kann
    property OnProgressBarPosChange: TNotifyEvent read FOnProgressBarPosChange
        write FOnProgressBarPosChange;
  end;

implementation

// du musst dafür sorgen, dass eben in sinnvollen bzw.
// entsprechend der Propertys eingestellten Schritten
// in deinem Code doProgressBarPosChange aufgerufen wird.
// und natürlich musst du FProgressBarPos auch setzen.
procedure TMyVideoObject.doProgressBarPosChange;
begin
  if Assigned(FOnProgressBarPosChange) then
    FOnProgressBarPosChange(Self);
end;

end.
Eine andere Alternative wäre, ein Published Property vom Typ TProgressBar.
Da kannst du dich dann um das setzten selbst kümmern.
Gruß, Frank
Frank Reim
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Wozu TNotifyEvent oder TEvent?

  Alt 13. Dez 2005, 10:42
Also ich hab in einer Komponente eine Progressbar eingefügt, das sieht so aus:

Delphi-Quellcode:
private
 FProgressBar: TProgressBar;
published
 property ProgressBar: TProgressBar read FProgressBar write SetProgressBar;


procedure TKomponente.SetProgressBar(const Value: TProgressBar);
begin
if FProgressBar <> Value then
 begin
 FProgressBar := Value;
 if Value <> nil then
  Value.FreeNotification(Self);
 end;
end;
Wenn du die Komponente jetzt im Objektinspektor anschaust kannst du eine Progressbar zuweisen, d.h. du nimmst eine Progbar, ziehst die auf die Form und wählst dann in der Progressbareigenschaft deine Progbar aus(wie bei "Menu" bei der Form)
das müsste bei einem Objekt auch gehen, die musst dann eben per Code das ganze zuweisen
Kompo.Progressbar:=Progressbar1 im Objekt selber kannst du dann der FProgressbar die Werte zuweisen die dann im Programm von der Progressbar1 übernommen werden.

Mfg
Martin Weber
Ich bin ein Rüsselmops
  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 13:27 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