AGB  ·  Datenschutz  ·  Impressum  







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

Eine Procedure auf 22 Buttons...

Ein Thema von beanbear6 · begonnen am 3. Nov 2009 · letzter Beitrag vom 3. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2      
beanbear6

Registriert seit: 28. Okt 2009
Ort: Passau
170 Beiträge
 
Delphi 7 Enterprise
 
#1

Eine Procedure auf 22 Buttons...

  Alt 3. Nov 2009, 00:03
Hallo Profis,
ich versuch nun mal meine Frage verständlich zu formulieren...

Ich hab 22 Buttons (Name: cb10 bis cb31), dazu entsprechend 22 Proceduren,
welche bis auf eine Kleinigkeit abweichen.

Nun wie kann ich alles in eine Procedure stecken? ich muss
bei Klick auf einen der Buttons feststellen können, welchen
der Buttons ich geklickt habe und die Nummer des Buttons
extrahieren.

Beispiel: Klicke ich auf cb27 muss ich die 27 extrahieren.
Klicke ich auf cb12 muss ich die 12 extrahieren.

Wie könnte man das lösen? Sorry, bin noch ziemlicher
Anfänger in Sachen Delphi und bitte Euch daher um
Hilfe.
Gruß beanbear6
Reiner
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: Eine Procedure auf 22 Buttons...

  Alt 3. Nov 2009, 00:06
Hi!

Sicher, dass diese Frage, was mit Datenbanken zu tun hat?

Schau dir mal den Paramter "Sender" an. Der enthält das auslösende Objekt. Du musst dann nur allen Buttons die selbe Prozedur zuweisen.


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Eine Procedure auf 22 Buttons...

  Alt 3. Nov 2009, 00:06
Guten Abend,

jeder Butten hat eine Caption darin ist der Name enthalten.
Alternativ kannst Du auch den Button.Tag mit entsprechenden Werten
belegen - dann brauchst Du nicht extrahieren.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
beanbear6

Registriert seit: 28. Okt 2009
Ort: Passau
170 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Eine Procedure auf 22 Buttons...

  Alt 3. Nov 2009, 00:13
Hallo Leute,
wie gesagt, ich bin da einfach noch zu frisch in Delphi.
Mit Sender kann ich nichts anfangen... Hilfe in Delphi
ist auch sehr dürftig...

Und mit .Tag...

Muss ich da alle Buttons gleichzeitig markieren oder oh wie?

Gruß beanbear6

Könnt Ihr mir eventuell mit ein oder zwei Zeilen Quellcode helfen?
Ich will ja keine Lösung, nur nen Ansatz dazu...
Reiner
  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
 
#5

Re: Eine Procedure auf 22 Buttons...

  Alt 3. Nov 2009, 00:14
Zitat von Klaus01:
Guten Abend,

jeder Butten hat eine Caption darin ist der Name enthalten.
Alternativ kannst Du auch den Button.Tag mit entsprechenden Werten
belegen - dann brauchst Du nicht extrahieren.

Grüße
Klaus
Jeder Button hat von Haus aus einen eigenen Namen, der sich auch bei einer Lokalisierung nicht ändert.
Gut, Tags würden sich auch nicht ändern, ist aber doch sehr mühsam, jedem Button auch noch ein Tag zu vergeben.
(... und welches Pferd springt höher als es muss ...)

Auf jeden Fall würde ich den ausführenden Code nicht direkt im OnClick-Ereignis ausführen, sondern in einer eigenen procedure mit entsprechenden Parametern. Das OnClick-Ereignis stellt dann nur noch die Parameter anhand des benutzten Buttons zusammen und ruft dann die procedure auf.

Dadurch schafft man auch die empfohlene Trennung von Ein-/Ausgabe und Verarbeitung.

cu

Oliver
Delphi-Quellcode:
procedure TForm1.Button1OnClick( Sender : TObject );
begin
  if Sender = Button1 then MachWas;
  if Sender = Button2 then MachWasAnderes;
end;
Diese procedure muss dann natürlichem im OI jedem Button zugewiesen werden (siehe links bei Ereignisse)
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
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Eine Procedure auf 22 Buttons...

  Alt 3. Nov 2009, 06:37
Wie gesagt ist aber <Button>.Tag bzw. dann Sender.Tag die bessere Option.
Dabei handelt es sich um eine Integer-Eigenschaft jeder Komponente, die frei belegt werden kann.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.088 Beiträge
 
Delphi 12 Athens
 
#7

Re: Eine Procedure auf 22 Buttons...

  Alt 3. Nov 2009, 07:16
Und das Beste: einfache Integer-Vergleiche lassen a) einfacher vergleichen und b) kann man auch CASE verwenden.

Hab mal 'ne komplette GUI nud auf .Tag aufgebaut.
Hat zwar einige Zeit gebraucht, bis alle Komponenten ihren Tag definiert hatten,
aber danach ging es um so einfacher.

In .Tag war die Komponenten ID und in den höheren Dezimalstellen einige Zusatzinfos kodiert,
so lassen sich locker mehrere hundert Komponenten über 'ne Hand voll Funktionen verwalten,
vom Speichern und Laden der Werte über die Eingabeprüfungen, bis hin zur Auswertung.
Im .Tag waren alle nötigen Infos dafür kodiert, so daß man nirgendwo weitere Infos ablegen muß.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Eine Procedure auf 22 Buttons...

  Alt 3. Nov 2009, 07:32
Die möglichen Werte der Tags kann man auch in Konstanten hinterlegen
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Eine Procedure auf 22 Buttons...

  Alt 3. Nov 2009, 08:06
Hallo,

Tag im Object-Inspector setzen.
cb17 bekommt also die 17

Dann eine neue Prozedur definieren,
also im Interface + im Implementation

Delphi-Quellcode:
procedure TForm1.OnButtonClick(Sender : TObject);
begin
  with Sender As TButton do
  begin
    TuWas(Tag);
  end;
end;



procedure TForm1.TuWas(Nummer: Integer);
begin
end;
Diese im Object-Inspector Prozedur beim OnClick
der einzelnen Buttons auswähhlen (über die ComboBox)


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#10

Re: Eine Procedure auf 22 Buttons...

  Alt 3. Nov 2009, 08:14
Hier teilen sich wieder die Meinungen

Die finde die Abfragen über "if sender = BtnMachwas" lesbarer und weniger fehleranfälliger, als die Arbeit mit Tags. Wenn ein Button "aus irgendeinem Grund" gelöscht wird (Kann ja auch eine Checkbox o.ä. sein) meldet der Compiler zumindest eine Fehlermeldung. Bei Abfrage über Tags kompiliert der einfach durch.

Aber wie gesagt: Geschmackssache!
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  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 22:52 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