Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Klick aus einem array of Shape (https://www.delphipraxis.net/122267-klick-aus-einem-array-shape.html)

zorakh 12. Okt 2008 17:27


Klick aus einem array of Shape
 
Also ich habe ein Array voll mit Shapes.
insgesamt habe ich ca 250 Shapes. Bei allen soll etwas passieren, wenn man auf sie klickt(das entsrechende Shape soll sich dann rot färben)

Irgendwie lies es sich bewerkstelligen.
Also eine Funktion, die wenn ich auf eines der Shapes klicke ausgelöst wird und das geklickte Shape verfärbt
Das hatte irgendwas mit dieser Sender Variable zu tun.


Aber ich komme einfach nichtmehr darauf wie es ging,
Kann mir da jemand helfen?

dominikkv 12. Okt 2008 17:41

Re: Klick aus einem array of Shape
 
Du teilst jedem Shape einfach die gleiche OnClick-Procedure zu und in dieser kannst du über Sender auf das Shape zugreifen:

Delphi-Quellcode:

for I := 0 to Length(MyShapeArray) - 1 do
  MyShapeArray[I].OnClick := MeineOnClickProcedure;

// ...


procedure TForm1.MeineOnClickProcedure(Sender: TObject);
begin
  with Sender as TShape do
    begin
      Color := clBlue;
    end;
end;

FAlter 12. Okt 2008 17:45

Re: Klick aus einem array of Shape
 
Hi,

du schreibst dir eine

Delphi-Quellcode:
procedure TMyClass.ShapeClick(Sender: TObject);
in welcher du es behandelst, z. B.

Delphi-Quellcode:
(Sender as TShape).BrushColor := clRed;
(ich glaube das hieß BrushColor, habe aber jetzt nicht nachgesehen).

Dann musst du noch das ganze Evwents:

Delphi-Quellcode:
procedure SetShapeOnClickEvent(const Shapes: array of TShape; Event: TNotifyEvent);
var Shape: TShape;
begin
  for Shape in Shapes do
    Shape.OnClick := Event;
end;

//oder
procedure SetShapeOnClickEvent(const Shapes: array of TShape; Event: TNotifyEvent);
var I: Integer;
begin
  for I := High(Shapes) to Low(Shapes) do
    Shapes[I].OnClick := Event;
end;
Mfg
FAlter

[edit] Irgendwas hat mit den Tags bnicht gestimmt. :?: [/edit]

Fussball-Robby 12. Okt 2008 18:20

Re: Klick aus einem array of Shape
 
BTW, es ist TShape.Brush.Color :zwinker:

mr_emre_d 12. Okt 2008 19:46

Re: Klick aus einem array of Shape
 
Ich finde Folgendes elegant(er):
Code:
  TShape(Sender).Brush....
:P

MfG

FAlter 12. Okt 2008 20:22

Re: Klick aus einem array of Shape
 
Zitat:

Zitat von mr_emre_d
Ich finde Folgendes elegant(er):
Code:
  TShape(Sender).Brush....
:P

MfG

Hi,

mit as gibts wenigstens ne ordentliche Exception, wenn der Sender mal kein TShape ist. Du könntest das Event ja auch einem Button zuweisen... Ein Typecast könnte dazu führen, dass es gar nicht knallt und plötzlich an ganz anderer Stelle was nicht funktioniert.

Mfg
FAlter

mr_emre_d 12. Okt 2008 20:50

Re: Klick aus einem array of Shape
 
Tja... Deshalb würde ich auch bei einem TShape OnClick ( oder was auch immer ) - Ereignis kein ButtonClick Ereignis zuweisen ! :P

Also
Code:
Shape1.OnClick := ShapeClick; // :D
MfG


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