Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Onclick-Ereignis für ein per Code erstelltes Objekt (https://www.delphipraxis.net/147440-onclick-ereignis-fuer-ein-per-code-erstelltes-objekt.html)

KahPee 8. Feb 2010 18:50


Onclick-Ereignis für ein per Code erstelltes Objekt
 
Hallo,

ich habe ein Problem, was wahrscheinlich ganz Banal zu Lösen ist. Ich erstelle zur Laufzeit eine neue Seite (Tab) in einer PageControl-Komponente. Und auf der Seite wird ein Bild erstellt. Die Bilder der verschiedenen Tabs sind in einem TImage-Array gespeichert.
Delphi-Quellcode:
Bilder: array of TImage
Der Index des Bildes ist identisch mit dem Index des Tabs in dem das Bild erstellt wurde.

Ich möchte jetzt folgendes erreichen bei dem Klick auf eines der Bilder aus dem Arrays soll ein Ereignis ausgelöst werden. Wie definiere ich dieses Ereignis für die Bilder?

Den Index des Bildes könnte ich ganz einfach ermitteln:
Delphi-Quellcode:
PageControl.ActivePage
Dies ist möglich, da ja immer nur das Bild, dass zu der gerade aktiven Seite gehört, geklickt werden kann.

toms 8. Feb 2010 19:06

Re: Onclick-Ereignis für ein per Code erstelltes Objekt
 
Delphi-Quellcode:
Bilder[i].OnClick := DeinOnClickEreignis
wobei DeinOnClickEreignis etwa so aussieht:


Delphi-Quellcode:
private
  procedure DeinOnClickEreignis(Sender : TObject);

Delphi-Quellcode:
implementation

//...

procedure TForm1.DeinOnClickEreignis(Sender : TObject);
begin
end;

KahPee 12. Feb 2010 14:10

Re: Onclick-Ereignis für ein per Code erstelltes Objekt
 
Zitat:

[Pascal Error] pfs_MainUnit.pas(151): E2010 Incompatible types: 'TObject' and 'Tobject'
Irgendwie hat der damit ein Problem...
Delphi-Quellcode:
bild[i].Onclick:=Image1Click;
Image1 ist auch auf der Form. das OnImage1Click ereignis löst nur "showmessage" aus. Wenn man auf das entsprechende Image klickt dann macht er das auch. Allerdings kompiliert der die Unit nicht wegen obiger Zuweisung.

mfg KahPee

KahPee 12. Feb 2010 22:50

Re: Onclick-Ereignis für ein per Code erstelltes Objekt
 
Der Fehler tritt bei mir bei JEDER Zuweisung eines Ereignisses dieser art auf, auch wenn ich das ganze mit einem Label mache. Woran könnte das liegen? in einem anderen Programm funktioniert ähnliches :(

daywalker9 12. Feb 2010 23:04

Re: Onclick-Ereignis für ein per Code erstelltes Objekt
 
Poste mal bitte ein bisschen mehr von deinem Code. So kann man nicht sehen was dort falsch ist.

KahPee 12. Feb 2010 23:17

Re: Onclick-Ereignis für ein per Code erstelltes Objekt
 
Deklaration:
Delphi-Quellcode:
var pagepic: array of Timage;
Array vergrößern
Delphi-Quellcode:
SetLength(pagepic, Length(pagepic)+1);                     //Array vergrößern
  index:=length(pagepic-1); //etwas mit dem letzten Object im Array machen
  pagepic[index]:=Timage.Create(self);
  pagepic[index].Onclick:=Image1Click;

Image1Click ist eine funktionierende Prozdeur wie oben schon beschrieben. Kann es sein, dass das was mit Objekten in dynamischen arrays zu tun hat?

mfg KahPee

daywalker9 12. Feb 2010 23:19

Re: Onclick-Ereignis für ein per Code erstelltes Objekt
 
Lad mal bitte deine ganze Unit mit hoch.

KahPee 12. Feb 2010 23:29

Re: Onclick-Ereignis für ein per Code erstelltes Objekt
 
Das ganze Projekt besteht aus mehreren Units unten die MainUnit und die Unit mit den Declarationen. Die anderen Units sind unrelevant.

daywalker9 12. Feb 2010 23:37

Re: Onclick-Ereignis für ein per Code erstelltes Objekt
 
Ah OK. Nun verstehe ich:

Du hast folgendes:
Delphi-Quellcode:
Tobject=record             //Objekte
    Typ: Tobjecttyp;
  end;

Wobei Delphi ja selber ein Typen von TObject hat. Dort kommt der durch einander. Benne das um und es funktioniert

KahPee 12. Feb 2010 23:40

Re: Onclick-Ereignis für ein per Code erstelltes Objekt
 
argh... so was blödes..

Vielen Dank!! Ich bin noch dabei den Schritt vom Anfänger zum Fortgeschrittenen Programmierer zu machen :P

KahPee


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 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 by Thomas Breitkreuz