AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Eigenes Objekt welches TLabel, TImage nutzt

Ein Thema von hedie · begonnen am 2. Feb 2016 · letzter Beitrag vom 3. Feb 2016
 
Perlsau
(Gast)

n/a Beiträge
 
#16

AW: Eigenes Objekt welches TLabel, TImage nutzt

  Alt 3. Feb 2016, 09:20
Ich würde gerne ausserhalb des Objekts eine Prozedur definieren, welche ich innerhalb meines Objekts aufrufen kann. Sinn und Zweck soll sein, dass wenn jemand auf ein Image klickt und somit den Button betätigt, soll dies der Anwender aussehalb meines Objektes erfahren, indem seine zuvor definierte Prozedur aufgerufen wird.
Man kann schon was machen, um ein Ereignis in einer Klasse zu erzeugen und in einer aufrufenden Unit auf dieses Ereignis zu reagieren. Ich verwende als Beispiel immer gerne das, was ich ständig mache: Im Datenmodul, das die Datenbank-Zugriffskomponenten enthält, ein Ereignis erzeugen, wenn bestimmte Tabellen gesrcollt werden, um auf diese Weise in der Statusbar der Mainform gewisse Informationen über den ausgewählten Record anzeigen zu lassen.

Schritt 1: Du deklarierst in der Klassen-Unit außerhalb der Klassen-Deklaration einen Ereignis-Typ:
Delphi-Quellcode:
UNIT UnitData;

INTERFACE

USES
  SysUtils, StrUtils, Classes, DBAccess, IBC, DB, MemDS;

TYPE // Das wird außerhalb der Klasse deklariert
  TUpdateStatusbarEvent = Procedure of Object;
  ...
TYPE // ab hier beginnt dann die eigentliche Klasse
  TDatMod = CLASS(TDataModule)
  ...
end.
Schritt 2: Damit hast du nun einen neuen Typ namens TUpdateStatusbarEvent . Nun deklarierst du eine Variable von diesem Typ im Private-Abschnitt:
Delphi-Quellcode:
...
  PRIVATE { Private-Deklarationen }
    Var
      fUpdateStatusbar : TUpdateStatusbarEvent;
...
end.
Schritt 3: Danach erzeugst du ein Property im Public-Bereich:
Delphi-Quellcode:
...
  PUBLIC { Public-Deklarationen  }
...
    Property OnUpdateStatusbar : TUpdateStatusbarEvent read fUpdateStatusbar write fUpdateStatusbar;
...
end.
Schritt 4: In deiner aufrufenden Unit, in der etwas passieren soll, weist du nun dieses Ereignis deines Objekts (deiner Klasse) einer Methode deiner aufrufenden Unit zu, hier der Aktualisierung der Statusbar:
Delphi-Quellcode:
Procedure TFormMain.FormCreate(Sender: TObject);
begin
  ..
  DatMod.OnUpdateStatusbar := StatusBarAktuell; // DatMod ist hier die Variable für die Instanz des Datenmoduls
  ..
end;
Schritt 5: Um nun im Datenmodul ein Ereignis auszulösen, verwende ich folgenden Code genau dort, wo das Ereignis ausgelöst werden soll, z.B. in der AfterScroll-Ereignisbehandlung:
Delphi-Quellcode:
Procedure TDatMod.View_LogAccessAfterScroll(DataSet: TDataSet);
begin
  If Assigned(fUpdateStatusbar) Then fUpdateStatusbar;
end;
In meiner Hauptform wird nun immer dann, wenn sich in dieser Tabelle der Datensatzzeiger ändert (gescrollt wird), die private Methode StatusBarAktuell; aufgerufen.
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz