Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Alternative zu onClick?! (https://www.delphipraxis.net/50574-alternative-zu-onclick.html)

sascha_maass 27. Jul 2005 21:40


Alternative zu onClick?!
 
Hi!

Habe folgendes Problem:
Ich habe 30 Buttons dynamisch erstellt und alle sollen dieselbe Prozedur aufrufen, lediglich andere Parameter übergeben. Wie mache ich das am kürzesten?!

Die Antwort liegt wahrscheinlich vor mir, aber ich seh sie nit ;)


thx!

sascha

brechi 27. Jul 2005 21:48

Re: Alternative zu onClick?!
 
kommt auf den parameter an

also d kannst jedem button die das gleiche onclick ereignis im objektinspektor geben und im der prozedur selber kannste über den Sender rasufinden welcher button geklickt wurde

z.b.:
form1.caption := (Sender as TButton).caption;

bttb930 27. Jul 2005 21:49

Re: Alternative zu onClick?!
 
was für parameter?

Olli 27. Jul 2005 21:49

Re: Alternative zu onClick?!
 
Kleiner Top: OnClick hat auch einen Parameter Namens Sender ... den kannst du zur Unterscheidung benutzen. Dann kannst du die gleiche OnClick-Methode allen Buttons zuweisen ;)

sascha_maass 27. Jul 2005 21:57

Re: Alternative zu onClick?!
 
Zitat:

Zitat von Olli
Kleiner Top: OnClick hat auch einen Parameter Namens Sender ... den kannst du zur Unterscheidung benutzen. Dann kannst du die gleiche OnClick-Methode allen Buttons zuweisen ;)

das hört sich jo super an!
und in sender steht dann der name des buttons? seh ich das richtig?

sascha_maass 27. Jul 2005 22:02

Re: Alternative zu onClick?!
 
funzt! grandiose sache :)

dickes merci an alle!

gruß, sascha

Olli 27. Jul 2005 22:19

Re: Alternative zu onClick?!
 
Soweit ich weiß, haben Buttons eine Property "Tag". Dort kannst du einen Integer speichern (schon im Formdesigner), der dann zur Unterscheidung dient. Ist weit effektiver als über den Namen zu vergleichen.

Code:
Stores an integer value as part of a component.

property Tag: Longint;

Description

Tag has no predefined meaning. The Tag property is provided for the convenience of storing additional integer value or pointer information for special needs in an application. For example, use the Tag property when implementing case statements with a component.
Achso ... und du kannst dann CASE benutzen, statt IF ...

Glühwürmchen 28. Jul 2005 13:13

Re: Alternative zu onClick?!
 
... und wenn Du diesen TAG noch binär ausliest mit logischen verknüpfungen dann kriegst Du da massig Infos rein...

BlackJack 28. Jul 2005 13:20

Re: Alternative zu onClick?!
 
Zitat:

Zitat von Glühwürmchen
... und wenn Du diesen TAG noch binär ausliest mit logischen verknüpfungen dann kriegst Du da massig Infos rein...

ja, ungefähr 2^32 infos, genauso viele wie in einen Integer ;D

Olli 28. Jul 2005 14:17

Re: Alternative zu onClick?!
 
Zitat:

Zitat von Glühwürmchen
... und wenn Du diesen TAG noch binär ausliest mit logischen verknüpfungen dann kriegst Du da massig Infos rein...

Was meinst du mit Binär? Als Bitmaske? Dann hast du recht. Aber wer verbietet dir einen Integer normal zu nutzen? :gruebel:

Glühwürmchen 2. Aug 2005 09:59

Re: Alternative zu onClick?!
 
Verbieten tut mir das natürlich keiner.

Was ich meinte versuche ich mal an folgendem Beispiel zu erklären:

Ich habe eine EingabeMaske mit 5 verschiedenen Editfeldern. Es sit wichtig, daß die eingegebenen Werte bestimmte Kriterien erfüllen. Dies kann jedoch erst getestet werden, wenn alle 5 Felder gefüllt wurden.
Nun gibt es eine FehlerSuchFunktion die sich die FeldInhalte ansieht und zurückgibt, welche Felder fehlerhaft sind.

Würde diese Information über eine normale Integerzahl zurückgegeben, gäbe es 2^5 (= 32) verschiedene Möglichkeiten, was diese Integerzahl bedeuten könnte. Die Funktion zum auswerten dieser Integerzahl müßte also eine case-Abfrage über 32 verschiedene Zahlen starten.
Unangenehm wird es, wenn die EingabeMaske 30 Felder hat....

Schneller und leichter geht es mit einer binär codierten Info:
Jedem Eingabefeld wird eine binäre Zahl zugewiesen:
ErrorInEdit1 = 1; ErrorInEdit2 = 2; ErrorInEdit3 = 4; ErrorInEdit4 = 8; ErrorInEdit5 = 16.
Der FehlerWert der jetzt zurückkommen kann hat ebenfalls den maximalen Wert von 31 (inkl. Null sind das 32 Werte) aber durch die binäre Auswertung, komme ich bereits nach 5 Abfragen an alle Informationen, die ich benötige.
Bei einer EingabeMaske mit 30 Feldern brauche 30 Abfragen.

Luckie 2. Aug 2005 10:01

Re: Alternative zu onClick?!
 
Und was hat das jetzt bitte mit dem Ursprungsthema zu tun?

Glühwürmchen 2. Aug 2005 10:43

Re: Alternative zu onClick?!
 
Daß ich auf diese Art und Weise in der Eigenschaft "Tag" eine ganze Menge mehr Informationen rein geben kann, als nur eine einzige Nummer.


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