AGB  ·  Datenschutz  ·  Impressum  







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

Eigenes Objekt welches TLabel, TImage nutzt

Ein Thema von hedie · begonnen am 2. Feb 2016 · letzter Beitrag vom 3. Feb 2016
Antwort Antwort
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#1

AW: Eigenes Objekt welches TLabel, TImage nutzt

  Alt 3. Feb 2016, 06:30
Danke, das habe ich bereits versucht:

Delphi-Quellcode:
type TmyObject = class(TPanel)
  private
    ...
    FOnButtonClick:TNotifyEvent;
  public
    property OnButtonClick: TNotifyEvent read FOnButtoClick write FOnButtoClick;
    ...
end;

...

procedure MeineFunktion;
begin
  ShowMessage(inttostr(Form1.test.ButtonActive));
end;

...

var
  test:TmyObject
...
  test.onButtonClick := MeineFunktion;
Dies gibt mir eine Fehlermeldung:

"Inkompatible Typen: Methodenzeiger und reguläre Prozedur"
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#2

AW: Eigenes Objekt welches TLabel, TImage nutzt

  Alt 3. Feb 2016, 06:54
Stimmt ja auch. TNotifyEvent ist ein Zeiger auf ein ein 'Procedure of Object', deine 'MeineFunktion' nur eine Prozedur.

Erstelle Dir eine Klasse mit einer Methode 'MeineFunktion'.

Ich würde aber eher ein TFrame verwenden: Ist einfacher, finde ich. Das muss man nicht erst als Komponente registrieren. Man hat aber trotzdem den Vorteil, sich das im Designer zurecht schubsen zu können.
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#3

AW: Eigenes Objekt welches TLabel, TImage nutzt

  Alt 3. Feb 2016, 07:06
Stimmt ja auch. TNotifyEvent ist ein Zeiger auf ein ein 'Procedure of Object', deine 'MeineFunktion' nur eine Prozedur.

Erstelle Dir eine Klasse mit einer Methode 'MeineFunktion'.

Ich würde aber eher ein TFrame verwenden: Ist einfacher, finde ich. Das muss man nicht erst als Komponente registrieren. Man hat aber trotzdem den Vorteil, sich das im Designer zurecht schubsen zu können.
"MeineFunktion" ist ausserhalb des Objekts bzw. der Klasse.

Wenn ich im Public Bereich der Klasse

procedure MeineFunktion; schreibe, dann meldet er "Ungenügende Forward-oder External-Deklaration"
Wie kann ich dem Compiler mitteilen, dass diese Prozedur erst später definiert wird und zwar von ausserhalb der Klasse?

Zum Thema TFrame.
Ich benötige ein TLabel als Grundlage, da es mir als Container für meine Objekte dient und ich zudem
damit die Hintergrundfarbe anpassen kann.

TFrame kenne ich noch nicht und weiss nicht ob es damit genau so einfach gewesen wäre.
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#4

AW: Eigenes Objekt welches TLabel, TImage nutzt

  Alt 3. Feb 2016, 07:29
MeineFunktion kann bzw. soll ja auch außerhalb der Klasse sein, aber dafür eine Methode einer anderen Klasse. Deine ist eine sog. "reguläre Prozedur", das ist etwas anderes.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#5

AW: Eigenes Objekt welches TLabel, TImage nutzt

  Alt 3. Feb 2016, 08:14
Vielen Dank für deine Antwort.
Leider ist diese Thematik noch ein bisschen Neuland für mich.

Bei einem OnClick von einem Objekt wie z.B einem TLabel kann ich ja auch eine externe Prozedur zuweisen.
Wie wird dass dan da gelöst?
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Eigenes Objekt welches TLabel, TImage nutzt

  Alt 3. Feb 2016, 08:40
Bei einem OnClick von einem Objekt wie z.B einem TLabel kann ich ja auch eine externe Prozedur zuweisen.
Nein, kann man nicht.

Es muß immer eine "Methode" (Prozedur in irgendeiner Klasse) sein, welche einen Parameter vom Typ TObjekt hat.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#7

AW: Eigenes Objekt welches TLabel, TImage nutzt

  Alt 3. Feb 2016, 08:41
Danke

Jetzt habe ich es verstanden!
Einfach die Funktion noch innerhalb der Klasse z.B. im "private" Bereich bekannt machen.
Dann gehts
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  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 13:58 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