AGB  ·  Datenschutz  ·  Impressum  







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

Klick aus einem array of Shape

Ein Thema von zorakh · begonnen am 12. Okt 2008 · letzter Beitrag vom 12. Okt 2008
Antwort Antwort
zorakh

Registriert seit: 12. Okt 2008
21 Beiträge
 
#1

Klick aus einem array of Shape

  Alt 12. Okt 2008, 18:27
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?
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Klick aus einem array of Shape

  Alt 12. Okt 2008, 18:41
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;
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Klick aus einem array of Shape

  Alt 12. Okt 2008, 18:45
Hi,

du schreibst dir eine

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

(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]
Felix Alter
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Klick aus einem array of Shape

  Alt 12. Okt 2008, 19:20
BTW, es ist TShape.Brush.Color
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#5

Re: Klick aus einem array of Shape

  Alt 12. Okt 2008, 20:46
Ich finde Folgendes elegant(er):
Code:
  TShape(Sender).Brush....


MfG
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Klick aus einem array of Shape

  Alt 12. Okt 2008, 21:22
Zitat von mr_emre_d:
Ich finde Folgendes elegant(er):
Code:
  TShape(Sender).Brush....


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
Felix Alter
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#7

Re: Klick aus einem array of Shape

  Alt 12. Okt 2008, 21:50
Tja... Deshalb würde ich auch bei einem TShape OnClick ( oder was auch immer ) - Ereignis kein ButtonClick Ereignis zuweisen !

Also
Code:
Shape1.OnClick := ShapeClick; // :D
MfG
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:28 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