AGB  ·  Datenschutz  ·  Impressum  







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

Ereignisse von dynamisch erzeugten Objekten?

Ein Thema von trymeout · begonnen am 22. Okt 2008 · letzter Beitrag vom 17. Apr 2014
Antwort Antwort
Seite 1 von 2  1 2      
trymeout

Registriert seit: 23. Okt 2006
35 Beiträge
 
Delphi XE7 Professional
 
#1

Ereignisse von dynamisch erzeugten Objekten?

  Alt 22. Okt 2008, 18:01
Ich erzeuge ein Reihe von Panels dynamisch und würde jetzt gerne deren Ereignisse auch dynamisch belegen.
Wie mache ich sowas?

Habe mich bereits daran probiert, jedoch ohne großen Erfolg.
z.B. MouseDown Ereignis - MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Irgendwie kann ich die ganzen Parameter nicht verwenden.

Und wie verhält es sich wenn ich Panels dynamisch erstelle und auf diesen Panels sind Label, Edit oder sonstige Dinge.
Muss ich jetzt wenn ich z.B. ein Drag realisieren will das für alle erstellen wenn ich z.B. das Panel verschieben will?

Habe dazu viele Posts gelesen jedoch nicht das richtige gefunden.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#2

Re: Ereignisse von dynamisch erzeugten Objekten?

  Alt 22. Okt 2008, 18:04
Du musst eine Ereignisbehandlungsroutine in der passenden Form (Art und Weise, nicht Formular) haben und dann kannst Du sie einfach dem OnIrgendwas Deines dynamischen Objekts zuweisen
MeinDynObjekt.OnCreate := MeinCreate(EinSender); Sherlock
Oliver
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#3

Re: Ereignisse von dynamisch erzeugten Objekten?

  Alt 22. Okt 2008, 18:37
Ich gehe mal von aus, dass du dein Panel schon dynamisch erstellt hast.

Dann gehe wie Folgt vor:

Delphi-Quellcode:
 
MeinDynamischesPanel := TPanel.create(Form1);
MeinDynamischesEdit := TEdit.create(MeinDynamischesPanel);
MeinDynamischesEdit.Parent := MeinDynamischesPanel; //kann man glaube ich auch weglassen
... und so für alle anderen Objekte.

Was dein OnMouseDown Ereignis betrifft:

Du musst eine Procedure mit folgenden Parametern in dein Formular einbinden:
Delphi-Quellcode:
...
public
Procedure MeinOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
...

dann die eigentliche Funktion
Delphi-Quellcode:
Procedure TForm1.MeinOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
... Quelltext
end;
Jetzt kannste diese Funktion für z.B. dein Panel benutzen:

Delphi-Quellcode:
...
MeinDynamischesPanel.OnMouseDown := MeinOnMouseDown;

Da du diese Procedure ja nun auch für alle anderen Panels nutzen kannst musst du in der Funktion selber noch zwischen deinen ganzen Panels unterscheiden:


Delphi-Quellcode:
Procedure TForm1.MeinOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Sender.Classname = 'TPanelthen
  with TPanel(Sender) do
  ....
end;
Marco Tröger
  Mit Zitat antworten Zitat
trymeout

Registriert seit: 23. Okt 2006
35 Beiträge
 
Delphi XE7 Professional
 
#4

Re: Ereignisse von dynamisch erzeugten Objekten?

  Alt 22. Okt 2008, 20:52
5 Sterne gehen an...

Danke, das hilft mir weiter.

Ich stelle mir nur gerade die Frage, wenn ich das Panel manuell erstelle, habe ich ja alle Ereignisse.
Wenn ich das Panel dynamisch erstelle, wieso habe ich dann die Ereignisse nicht?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Ereignisse von dynamisch erzeugten Objekten?

  Alt 22. Okt 2008, 20:56
Hm? Ob zur Designtime oder zur Runtime, die Ereignisse stehen Dir doch immer zur Verfügung.
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
trymeout

Registriert seit: 23. Okt 2006
35 Beiträge
 
Delphi XE7 Professional
 
#6

Re: Ereignisse von dynamisch erzeugten Objekten?

  Alt 24. Okt 2008, 00:15
Ich habe mich mal dran probiert, aber so ganz klappt es noch nicht.

Ich habe eine Datei angehängt und habe ein paar Kommentare eingefügt mit entsprechenden Fragen!
Angehängte Dateien
Dateityp: rar dragtest_146.rar (189,0 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Ereignisse von dynamisch erzeugten Objekten?

  Alt 24. Okt 2008, 08:12
Du musst den Sender-Parameter auswerten, dann weißt Du, um welches Control es sich handelt.
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
Antonov

Registriert seit: 11. Apr 2014
21 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Ereignisse von dynamisch erzeugten Objekten?

  Alt 16. Apr 2014, 20:52
So ein ähnliches Problem habe ich auch:
Ich erzeuge Bilder dynamisch (also in Runtime) und möchte auf diese erzeugten Bilder ein OnMouseDown event haben (das sie dann bei gedrückter Maustaste verschiebt, aber den Teil der Prozedur habe ich schon). Ich brauche das Event, das mir diese beliebig vielen Bilder steuern lässt.

Die Vorschläge und Beispiele von Sherlock und SimStar001 sehen vielversprechend aus, jedoch komme ich dennoch nicht zum Ziel.
In Public habe ich meine eigene Procedure implementiert:
Delphi-Quellcode:
public
   procedure TForm1.CustomImageMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  end;
wobei der Commpiler sagt: "E2065 Ungenügende Forward- oder External-Deklaration: 'TForm1.CustomImageMouseDown'"

Info: Ich bin ziemlich neu und unerfahren in Delphi (2 Wochen etwa). Wenn es möglich ist, überspringt bitte nicht alle "offensichtlichen" Schritte.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Ereignisse von dynamisch erzeugten Objekten?

  Alt 16. Apr 2014, 21:00
Auch wenn ich das jetzt hier erklären könnte würde das für dich zu knapp ausfallen oder ich hätte einen Schreibkrampf

Darum lege ich dir mal ein Tutorial ans Herz, was dich auf den richtigen Weg bringt.

http://www.delphi-treff.de/tutorials...lphi-crashkurs
und speziell
http://www.delphi-treff.de/tutorials...rogrammierung/
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai
Online

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#10

AW: Ereignisse von dynamisch erzeugten Objekten?

  Alt 16. Apr 2014, 21:03
wobei der Commpiler sagt: "E2065 Ungenügende Forward- oder External-Deklaration: 'TForm1.CustomImageMouseDown'"
Dann ist deine Methode nur deklariert, aber nicht implementiert. D.h. du brauchst im Abschnitt implementation deiner Unit noch eine Implementation dieser Methode (mit derselben Deklaration). Übrigens ist die Angabe TForm1. vor dem Methodennamen im Deklarationsteil falsch, das gehört da nicht hin. Warum? Nun, die Methode steht bereits im Deklarationsteil einer Klasse (welche das ist, ist aus dem gegebenen Code nicht ersichtlich, vermutlich aber TForm1).

Und ich stimme Sir Rufo zu: ein Tutorial (für Einsteiger) kann helfen.

MfG Dalai
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:29 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