Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ComboBox - OnChange-Behandlung zuweisen (https://www.delphipraxis.net/20592-combobox-onchange-behandlung-zuweisen.html)

cBoB 20. Apr 2004 08:15


ComboBox - OnChange-Behandlung zuweisen
 
:shock:

Hi!
Kurze, mglw. auch dumme Frage: wie kann ich einer erst zur Laufzeit erzeugten ComboBox die OnChange Behandlung zuweisen?

-c-

faux 20. Apr 2004 08:21

Re: ComboBox - OnChange-Behandlung zuweisen
 
Funktioniert das nicht:
Delphi-Quellcode:
Combobox.OnChange := Form1.Prozedur;
???

cBoB 20. Apr 2004 08:37

Re: ComboBox - OnChange-Behandlung zuweisen
 
Na irgendwie klappt das nicht. Dann kommt immer eine Fehlermeldung:
"Inkompatible Typen: 'TNotifyEvent' und 'procedure...'"
Also nicht so einfach, ja?

-c-

faux 20. Apr 2004 08:41

Re: ComboBox - OnChange-Behandlung zuweisen
 
Die Prozedur muss aber folegnde Form haben:
Delphi-Quellcode:
procedure Name(Sender: TObject);
Du darfst nur den name verändern, der Rest muss gleich bleiben.

cBoB 20. Apr 2004 09:05

Re: ComboBox - OnChange-Behandlung zuweisen
 
Ok, mit "Sender: TObject" gehts jetzt entweder n Schritt weiter oder wie auch immer, jedefalls kommt jetzt die Fehlermeldung:
"Bei der vorherigen Deklaration von <Name> wurde die Direktive overload nicht angegeben"
und jetzt stellt sich mir die Frage, wo ich da overload angeben soll?

[Edit] Ach nee, stimmt ja nicht: als nächster Fehler kommt dann wieder die Meldung: "Inkompatible Typen...."

himitsu 20. Apr 2004 09:07

Re: ComboBox - OnChange-Behandlung zuweisen
 
Das Overload-Problem sollte eigentlich nicht kommen.
Was hast'n für 'nen Namen für die Prozedur verwendet?


Und das, was man immer machen kann ... bei Fehlern macht sich ein bissl Quellcode nicht schlecht - damit wir auch was sehn.

Muetze1 20. Apr 2004 09:08

Re: ComboBox - OnChange-Behandlung zuweisen
 
Moin!

Das heisst soviel, das die Procedure mit dem Namen schon gibt und daher müsstest du Overload angeben, wenn du 2 Proceduren haben willst mit unterschiedlichen Parametern und gleichen Namen. Zum Teil kann der Fehler auch daher rühren, wenn es schon eine Variable mit der gleichen Bezeichnung in dem Gültigkeitsbereich gibt.

Ok, das "Inkompatible Typen" kann ich mir nur so erklären, das du die Procedure für das OnChange Event nicht in einer Klasse definiert hast sonder so irgendwo als globale/unit-private Funktion. Du musst es als Methode einer Klasse definieren, da bei den Callback/Ereignissen immer der Self Pointer der Klasse als erstes übergeben wird.

MfG
Muetze1

cBoB 20. Apr 2004 09:11

Re: ComboBox - OnChange-Behandlung zuweisen
 
Hab schon alle möglichen Namen verwendet, da ich auch vermutet hatte, irgendwo einen schon vergebenen zu nutzen, aber daran kanns nicht liegen.
Was muß alles beachtet werden, wenn ein On-Click,-Change,-Exit usw. zuweisen will? Die DelphiHilfe ist da nicht so aussagekräftig.

Muetze1 20. Apr 2004 09:15

Re: ComboBox - OnChange-Behandlung zuweisen
 
Moin!

Die Ereignisprocedure muss in einer Klasse als Methode definiert werden!

Das bedeutet z.B. so:
Code:
Type
  TForm1 = Class(TForm)
  private
    Procedure MyNewCallback(Sender: TObject);
  ...
  End;
So geht es nicht:
Code:
...

Implementation

Procedure MyNewCallback(Sender: TObject);
Begin
  ...
End;
Weil letztes ist keine Methode und daher geht es nicht diese zu zu weisen.

MfG
Muetze1

cBoB 20. Apr 2004 09:17

Re: ComboBox - OnChange-Behandlung zuweisen
 
@Muetze1
AAhhh, da kommen wir der Sache schon näher glaube ich. Das muß ich mal überprüfen.
Das Problem ist nämlich wie gesagt: ich kann nämlich erst zur Laufzeit einen Teil des Inhalts von dem Formular erzuegen und da komm ich noch nicht so ganz klar mit dem Übergeben von den ganzen zugehörigen Objecten bzw. ich weiss immer nicht so genau, was ich ich als Sender übergeben muß und kann, oder z.B. wie ich auf eine gerade erzeugte Komponente zeige usw.

Aber danke schonmal für den Ansatz, Muetze!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:39 Uhr.
Seite 1 von 2  1 2      

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