AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi onClick behandlung für dynamisch erzeugte objekte
Thema durchsuchen
Ansicht
Themen-Optionen

onClick behandlung für dynamisch erzeugte objekte

Ein Thema von Käthe · begonnen am 20. Okt 2004 · letzter Beitrag vom 21. Okt 2004
Antwort Antwort
Käthe

Registriert seit: 20. Okt 2004
2 Beiträge
 
#1

onClick behandlung für dynamisch erzeugte objekte

  Alt 20. Okt 2004, 18:21
wie definiere ich die onclick behandlungsroutine für dynamisch erzeugte TImage-objekte?

käthe
p.S.: is dringend für die schule!
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: onClick behandlung für dynamisch erzeugte objekte

  Alt 20. Okt 2004, 18:23
Du schreibst eine Routine für ein noch nicht existirendes Objekt und später gibst du dem TImage die methode mit TImage.OnClick := OnCLickMethod .
  Mit Zitat antworten Zitat
Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: onClick behandlung für dynamisch erzeugte objekte

  Alt 20. Okt 2004, 19:58
Zitat von Dax:
TImage.OnClick := OnCLickMethod .
ich weiß nicht ob sich das in neueren delphi-versionen geändert hat, aber in delphi 5 führte sowas noch zu einer compiler-fehlermeldung dieser kategorie hier:
[Fehler] Unit1.pas(36): Inkompatible Typen: Methodenzeiger und reguläre Prozedur
@TImage.OnClick := @OnClickMethod; // keine direkte Zuweisung sondern kopieren der Speicheradresse oh und btw: herzlich willkommen in der DP @Käthe
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: onClick behandlung für dynamisch erzeugte objekte

  Alt 20. Okt 2004, 20:08
Moin Nothine,

Zitat von Nothine:
ich weiß nicht ob sich das in neueren delphi-versionen geändert hat, aber in delphi 5 führte sowas noch zu einer compiler-fehlermeldung dieser kategorie hier:
nicht, wenn Du das als Methode deklarierst:

Delphi-Quellcode:
procedure TForm1.MyOnClickProc(Sender: TObject);
begin
  // was auch immer beim Klicken passieren soll
end;
TImage.OnClick := MyOnClickProc; Deine Methode würde zwar auch funktionieren, hat aber den Nachteil, das der implizite Parameter Self in der Prozedur dann nicht genutzt werden kann.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: onClick behandlung für dynamisch erzeugte objekte

  Alt 20. Okt 2004, 20:09
@Nothine: Die von dir beschriebene Fehlermeldung kommt wie die Fehlermeldung schon sagt, wenn du dem "OnClick" eine normale Procedure zuweist. Verlangt wird eine Methode, die Proczedure muss also zu einer klasse gehören.

Der Fehler kommt bei
Delphi-Quellcode:
procedure meineProcedure(Sender: TObject);
begin

end;
[...]
MyImage.OnClick := meineProcedure;
da kommt der Fehler wenn onClick vom Type TNotifyEvent ist und da ist definiert das die Procedure vom Type Object ist (grund für die incompatibilität ist das der versteckte Selfparameter fehlt)

der Fehler kommt nicht bei
Delphi-Quellcode:
procedure TEineKlasse.meineProcedure(Sender: TObject);
begin

end;
[...]
MyImage.OnClick := InstanzeVonEINEKLASSE.meineProcedure;
//da das OnClick im normalfall innerhalb dieser Klasse zugewiesen wird reicht somit auch "MyImage.OnClick := meineProcedure;"
Es hat also nichts mit Delphi5 zu tun sondern damit das es sich tatsächlich um incompatible typen handelt (da der versteckte Self-Parameter bei der normalen Procedure fehlt)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

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

Re: onClick behandlung für dynamisch erzeugte objekte

  Alt 20. Okt 2004, 20:16
Alternativ geht es auch noch so

Delphi-Quellcode:
procedure Test(Self: TObject; Sender: TObject);
begin
  ShowMessage('!!');
end;

procedure TMyClass.AProc;
var
  FProc: TNotifyEvent;
begin
  TMethod(FProc).Code := @Test;
  TMethod(FProc).Data := Self;
end;
FProc darf jedoch keine Property sein!

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
Käthe

Registriert seit: 20. Okt 2004
2 Beiträge
 
#7

Re: onClick behandlung für dynamisch erzeugte objekte

  Alt 21. Okt 2004, 20:40
hey

Jetzt ist's fast perfekt, bis auf ein paar schönheitsmakel.

Vielen Dank!!!!!

Käthe
  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 00:04 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