AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi in TFont.OnChange auf Owner zugreifen
Thema durchsuchen
Ansicht
Themen-Optionen

in TFont.OnChange auf Owner zugreifen

Ein Thema von himitsu · begonnen am 19. Jan 2009 · letzter Beitrag vom 19. Jan 2009
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

in TFont.OnChange auf Owner zugreifen

  Alt 19. Jan 2009, 03:18
Moin ihr Schlafwandler.

OK, TFont hat zwar keinen Owner, aber ich hab in einer Klasse mehrere TFonts (diese werden auch in der Klasse erstellt und freigegeben)
und bei Änderungen an diesen Fonts müßte in der Klasse ein ereignis ausgelöst werden (eine Funktion ausgeführt).

Aktuell ha ich es erstmal über Erweiterung gemacht,
aber vielleicht geht es ja auch irgendwie direkt mit TFont?
Delphi-Quellcode:
Type TFontEx = Class(TFont)
  Private
    FOwner: TObject;
    FTag: Integer;
  Public
    Property Owner: TObject Read FOwner Write FOwner;
    Property Tag: Integer Read FTag Write FTag Default 0;
  End;
Klassenintern arbeite ich mit TFontEx und nach außen hin caste ich es zurück nach TFont
und bei TFont.OnChange wird dann auf den Owner zugegriffen.

So, wie gesagt ... gibt es da vielleicht eine bessere Methode, oder kann ich das beruhigt weiter so verwenden? (funktionieren tut es zumindestens so schonmal)



'ne schöne Nacht noch
himi
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: in TFont.OnChange auf Owner zugreifen

  Alt 19. Jan 2009, 06:21
Verwende doch einfach das Observer-Pattern.

Die Verwendung des Observer-Musters hat ggü Deiner Idee den Vorteil, das sie flexibler ist, da nicht nur 'Owner' benachrichtigt werden können.

Wenn Du allerdings garantiert nur einen 'Owner' hast, würde ich im 'Owner' ein FontChange-Ereignis einrichten und das direkt mit dem OnChange-Ereignis des TFonts verbinden.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: in TFont.OnChange auf Owner zugreifen

  Alt 19. Jan 2009, 10:28
Soein OnChange-Ereignis hab ich ja im Owner ... und es ibt auch nur einen Owner, aber dafür mehrere Fonts, welche auf den Owner, über die selbe Routine zugreifen ... was allerdings kein Problem darstellt, da ich ja an den Font rankomm (siehe Sender).

*schuppen von augen fällt*
bin ich blöd ... ganz vergessen, daß die Objectrefferenz ja mit in der Ereignisprozedur (bzw. sozusagen im Zeiger darauf) gespeichert wird

Delphi-Quellcode:
// vorher

Procedure TCircuitDesigner.OnFontChange(Sender: TObject);
  Begin
    With TCircuitDesigner(TFontEx(Sender).Owner) do Begin
      DoLibraryChange;
      DoCircuitChange;
    End;
  End;

// jetzt

Procedure TCircuitDesigner.OnFontChange(Sender: TObject);
  Begin
    DoLibraryChange;
    DoCircuitChange;
  End;
manchma macht man sich echt mehr Arbeit, als nötig


gelöst ... gab nur selbstgemachte Probleme
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 02: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