![]() |
Mehrere Buttons, selbe Funktion mit Arrays
Ich habe mehrere Buttons, bei denen die selbe Funktion dahinter steckt, nur das Arrays befüllt werden sollen. Ich könnte jetzt jedem Button eine eigene Procedure zuordnen, ist aber nicht die feine englische Art. Gibt es da nicht eine elegantere Lösung?
Delphi-Quellcode:
var
Form2: TForm2; ergebnis: Array[1..16] of String; farbe: Array[1..16] of TColor; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); begin if ColorDialog1.Execute then begin farbe[1] := ColorDialog1.Color; ergebnis[1] := IntToHex(GetRValue(farbe[1]),2) // Rot-Wert (0..255) // in Hex umwandeln // mit min. 2 Zeichen + IntToHex(GetGValue(farbe[1]),2) // usw... + IntToHex(GetBValue(farbe[1]),2); Panel1.Color := ColorDialog1.Color; end; end; |
Re: Mehrere Buttons, selbe Funktion mit Arrays
Was genau ist denn dein Problem??
|
Re: Mehrere Buttons, selbe Funktion mit Arrays
Wie wäre es, wenn du allen Buttons die selbe Ereignisprozedur zuweist?
|
Re: Mehrere Buttons, selbe Funktion mit Arrays
Mein Problem ist, dass der Button1 die Arrays mit der Variablen [1] befüllen soll, der Button2 die Arrays mit der Variablen [2] usw.. Wie gesagt, ich kann jetzt die Prozedur 16mal untereinander schreiben, und die entsprechenden Indizes anpassen. Aber das muss doch auch eleganter gehen.
|
Re: Mehrere Buttons, selbe Funktion mit Arrays
Entweder du prüfst den Sender (Name oder besser noch die Instanz selber) und wählst darüber einen der Array-Indize aus
Delphi-Quellcode:
oder du verwendest das Tag-Property (
if Sender = Button1 then i := 1
else if Sender = Button2 then i := 2 ... farbe[i] := ... ![]() - weise im OI jedem Button die Indexnummer dem Tag-Property zu und verwendest dann in der Prozedur TComponent(Sender).Tag als Index. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 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-2025 by Thomas Breitkreuz