Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mehrere Buttons, selbe Funktion mit Arrays (https://www.delphipraxis.net/151142-mehrere-buttons-selbe-funktion-mit-arrays.html)

ickehausen 7. Mai 2010 07:33


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;

lbccaleb 7. Mai 2010 07:37

Re: Mehrere Buttons, selbe Funktion mit Arrays
 
Was genau ist denn dein Problem??

himitsu 7. Mai 2010 07:38

Re: Mehrere Buttons, selbe Funktion mit Arrays
 
Wie wäre es, wenn du allen Buttons die selbe Ereignisprozedur zuweist?

ickehausen 7. Mai 2010 07:45

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.

himitsu 7. Mai 2010 08:35

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:
if Sender = Button1 then i := 1
else if Sender = Button2 then i := 2
...

farbe[i] := ...
oder du verwendest das Tag-Property (Delphi-Referenz durchsuchenTComponent.Tag):
- 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 11:27 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