AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Shape OnClick Event?
Thema durchsuchen
Ansicht
Themen-Optionen

Shape OnClick Event?

Offene Frage von "KahPee"
Ein Thema von ThYpHoOn · begonnen am 27. Mai 2008 · letzter Beitrag vom 18. Mai 2009
Antwort Antwort
ThYpHoOn

Registriert seit: 9. Jan 2008
52 Beiträge
 
Delphi 5 Enterprise
 
#1

Shape OnClick Event?

  Alt 27. Mai 2008, 17:32
Guten Tag,

ich Programmiere derzeit im Rahmen des Schulunterrichts ein Billard-Spiel in Delphi. Der Tisch steht soweit und die Kugel kollidieren auch korrekt miteinander und mit der Wand.
Nun habe ich die Kugeln als ein Array genommen und per Shape erstellt. Wenn nun ein Foul auftreten würde und die Weiße Kugel bewegt werden müsste, muss man dies ja per OnClick auf den Shape der Weißen Kugel ( Kugeln[0].OnClick ?!) machen. Doch dies kann man ja logischerweise nicht per Prozedur machen, da es sich halt wie schon gesagt um ein Array handelt. Kennt ihr irgendeine bessere Lösung als die von meinem Lehrer:
OnClick-Event auf das komplette Formular, dann die Mouse-Position nehmen und dann schauen welche Shape-Position am nähsten von der Mouse-Position ist und diese dann übernehmen.


Gz ThY
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#2

Re: Shape OnClick Event?

  Alt 27. Mai 2008, 17:39
HI ThYpHoOn,

1. würd ich deimen Lehrer nicht OnClick empfehlen, sondern OnMouseDown / OnMouseMove.
2.
Zitat von ThYpHoOn:
Doch dies kann man ja logischerweise nicht per Prozedur machen, da es sich halt wie schon gesagt um ein Array handelt.
Natürlich kann man das machen. OnClick, OnMouseDown und OnMouseMove sind alles Ereignisse, die einen Sender beinhalten. Wenn du jetzt jeder Kugel die selbe Prozedur zuweist, dann kannst über Sender auswerten, von welcher das kommt. Du solltest den Kugeln dann halt noch ansprechende Namen geben, damit du einfacher herausfinden kannst, um wen es sich handelst oder Tag setzen.
3.
Zitat von ThYpHoOn:
und dann schauen welche Shape-Position am nähsten von der Mouse-Position ist
Das kann unter umständen dazu führen, dass du 2 Kugeln als Ergebniss hast, also nicht immer zuverlässig ist.

rollstuhlfahrer
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
dominikkv

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

Re: Shape OnClick Event?

  Alt 27. Mai 2008, 17:42
Delphi-Quellcode:
type
  TFormX = class(TForm)
  private
    procedure MeineOnClickProcedure(Sender: TObject);
  end;

//

procedure TFormX.MeineOnClickProcedure(Sender: TObject);
begin
  showmessage('Ich wurde von ' + (Sender as TShape).name + ' aufgerufen!');
end;

// die Prozedur dem Event zuweisen:
Kugeln[0].OnClick := MeineOnClickProcedure;

// wenn du sie wieder entfernen willst
Kugeln[0].OnClick := nil;
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  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: Shape OnClick Event?

  Alt 27. Mai 2008, 17:44
TShape hat kein OnClick-Ereignis
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
dominikkv

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

Re: Shape OnClick Event?

  Alt 27. Mai 2008, 17:47
Zitat von Fussball-Robby:
TShape hat kein OnClick-Ereignis
ohh... da sollte ich vielleicht doch davor nachschauen bevor ich was schreibe^^
Dann machs halt mit nem OnMouseUp (nachgeschaut, das gibts xD)
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Shape OnClick Event?

  Alt 17. Mai 2009, 13:50
Hallo ich habe die gleiche Situation nur dass es sich bei mir um ein Bild handelt (Timage).

Allerdings kriege ich as nicht wie oben beschrieben hin...
Delphi-Quellcode:
type
  TForm1 = class(TForm)
   public
    { Private-Deklarationen }
    procedure OnImageClick(Sender: TObject);
  end;

//

procedure TForm1.OnClick(Sender: TObject);
begin
  showmessage('test');
end;

// die Prozedur dem Event zuweisen:
fields[1,1].pic.onclick := OnImageClick; //fields ist ein zweidimensionaler Array von einem record mit der Variable pic (Timage)
//hier die fehlermeldung dieser Zeile: Undefinierter Bezeichner: 'OnImageClick'


weis da jemand weiter?
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#7

Re: Shape OnClick Event?

  Alt 17. Mai 2009, 18:52
Zitat:
// die Prozedur dem Event zuweisen:
fields[1,1].pic.onclick := OnImageClick; //fields ist ein zweidimensionaler Array von einem record mit der Variable pic (Timage)
//hier die fehlermeldung dieser Zeile: Undefinierter Bezeichner: 'OnImageClick'
Achtung: Du greift hier wohl von einem "normalen" Teil des Quelltextes auf einen Teil zu, der in einem Objekt liegt, heißt: Deine Prozedur, die da zuweisen will, findet die Prozedur OnImageClick nicht.

Dafür gibts 2 Lösungswege:
1) Du verschiebst den im Beitrag genannten Teil des Quelltextes in eine Prozedur von TForm1 -ODER-
2) (hierfür brauchst du ne Variable vom Typ TForm1) Du weist hier Form1.OnImageClick zu.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Shape OnClick Event?

  Alt 18. Mai 2009, 13:29
Vielen Dank das war es nicht ich habe den Fehler aber schon gefunde, hatte eine Prozedur an falscher Stelle deklariert trozdem vielen Dank
  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 08:26 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