AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi alternative zu 225 onclick-ereignissen ?
Thema durchsuchen
Ansicht
Themen-Optionen

alternative zu 225 onclick-ereignissen ?

Ein Thema von dEluXe · begonnen am 9. Nov 2004 · letzter Beitrag vom 10. Nov 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von dEluXe
dEluXe

Registriert seit: 30. Sep 2004
Ort: Berlin
12 Beiträge
 
Delphi 5 Enterprise
 
#1

alternative zu 225 onclick-ereignissen ?

  Alt 9. Nov 2004, 21:57
Hallo zusammen,

Wir sollen im Informatikunterricht eine Art Vier-Gewinnt programmieren.
Das Spielfeld soll eine größe von 15 x 15 Feldern (also 225 Einzelfelder)haben.
Ich habe das momentan so realisiert, indem ich 225 Images erstellt habe, die ich auch ohne Probleme füllen kann.
Nun komme ich mal zum eigentlichen Problem:
Um nun seinen Zug abzugeben, sollte der Spieler auf dem Spielfeld (225 Images ) eines der Felder anklicken, woraufhin ich dieses mit seiner Farbe fülle.

Aber WIE soll ich das jetzt machen ohne 225 onclick-Ereignisse für jedes Image zu schreiben ?

Oder gibt es eine alternative zu den Images mit der man ein solches Spielfeld erstellen kann ?


Danke im Voraus

dEluXe
Ich bin nicht schizophren, ich bin schon eine ganze Gruppe
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: alternative zu 225 onclick-ereignissen ?

  Alt 9. Nov 2004, 22:00
erstelle die Images dynamich und packe sie in ein array. Dann weißt du allen die gleiche OnClick-Methode zu. Anhand des Senders in der OnClick-Methode kannst du dann herausfinden welches deiner Images geklickt wurde (oder du missbrauchst du Tag-Eigenschaft dazu)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#3

Re: alternative zu 225 onclick-ereignissen ?

  Alt 9. Nov 2004, 22:02
ohje, viel zu komplex, meine alternative: definierst einfach ein onclick ereignis für alle steine, dann kannst du mittels dem sender der dem event übergeben wird von welchem object der event ausgelöst wurde.

edit: arrgh der gummibär war schneller
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#4

Re: alternative zu 225 onclick-ereignissen ?

  Alt 9. Nov 2004, 22:05


ist doch dasselbe, oder?

bis auf das array....
und dein code wäre dann so:

Delphi-Quellcode:
Image1:=TImage.Create;
Image2:=TImage.Create;
Image3:=TImage.Create;
//...
Image225:=TImage.Create;
-> lieber doch array

das ginge dann so:

Delphi-Quellcode:
var Images:array[1..225] of TImage;
begin
For i:=1 to 225 do
  Images[i]:=TImage.Create;
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#5

Re: alternative zu 225 onclick-ereignissen ?

  Alt 9. Nov 2004, 22:14
und noch was (relativ) einfaches:
nimm ein einziges Image, zeichne da die einzelnen steinchen drauf (Position musste halt mit einer einfachen Multiplikation ausrechnen....) und kannste auch einfach wieder beim Klicken über die Mausposition zurückrechnen (hoch lebe div)
Damit ersparst du dir, den ganzen Speicher mit TImages vollzustopfen
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von dEluXe
dEluXe

Registriert seit: 30. Sep 2004
Ort: Berlin
12 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: alternative zu 225 onclick-ereignissen ?

  Alt 9. Nov 2004, 22:32
Hmm...

so ganz versteh ich das noch nicht.

Wie erstell ich denn ein onclick-Ereignis ohne festzulegen auf was geklickt werden muss ?

Und wenn ich auf z.B. ein Image klicke dann wird doch bloss dort das onclick-Ereignis ausgelöst, oder ?

so ein kurzes codeschnippselchen würde mir vielleicht helfen

dEluXe
Ich bin nicht schizophren, ich bin schon eine ganze Gruppe
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#7

Re: alternative zu 225 onclick-ereignissen ?

  Alt 9. Nov 2004, 22:36
Hi dEluXe,

mal zum Beispiel:

Delphi-Quellcode:
//...
type
  TForm1 = class(TForm)
//deine objekte und funktionen etc.
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
//deine eigene Click-routine
    procedure Click(Sender: TObject);
  public
    { Public declarations }
  end;
//...
implementation
//...
procedure TForm1.Click(Sender: TObject);
begin
  ShowMessage('Hallo Welt');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
//hier werden den kompos die OnClick-Funktionen zugewiesen
//alles nur Beispiele:
  Button1.OnClick := Click;
  Image1.OnClick := Click;
  Form1.OnClick := Click;
end;
Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von dEluXe
dEluXe

Registriert seit: 30. Sep 2004
Ort: Berlin
12 Beiträge
 
Delphi 5 Enterprise
 
#8

Re: alternative zu 225 onclick-ereignissen ?

  Alt 9. Nov 2004, 23:01
HiHo,

und Danke für die schnellen Antworten.

@alcaeus
also wo ich meine eigene onclick-Prozedur hinschreibe hab ich jetzt verstanden.
Trotzdem bin ich noch nicht ganz schlau aus deinem Beispiel geworden, wie der Klick jetzt an meine eigene click-Prozedur geleitet wird ?

Jetzt mal als Beispiel ich klicke während dem Spiel auf ein Image (als Beispiel: Image34)
dann wird doch auch nur dort das onclick-Ereigniss ausgelöst, wie wird das denn an meine eigene click-Prozedur weitergeleitet und wie übergebe ich die Zahl 34 von dem Image an die Prozedur ?

man ist das kompliziert (zumindestens für mich )

dEluXe
Ich bin nicht schizophren, ich bin schon eine ganze Gruppe
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#9

Re: alternative zu 225 onclick-ereignissen ?

  Alt 9. Nov 2004, 23:08
Hi dEluXe,

es gibt etwas das du beachten musst: den Unterschied zwischen einem Ereignis und der Ereignisbehandlungsroutine.

Ich versuchs mal einfach: Wenn du auf einen Button klickst, dann wird das OnClick-Ereignis ausgelöst. Wenn dem OnClick-Ereignis nun eine Behandlungsroutine zugewiesen ist, dann wird der Code dieser Routine (in meinem Beispiel hieß die Routine "Click") ausgeführt.
Dies kann man auf 2 verschiedene Arten erledigen:
  1. Du kannst die OnClick-Behandlung zur Designzeit einfügen (z.B. mit einem Doppelklick auf einen Button auf deinem Form), oder
  2. du kannst dies alles zur Laufzeit machen.
Wie du es zur Designzeit machen musst weißt du hoffentlich.
Wenn du es zur Laufzeit machen willst, dann musst du wie bereits gezeigt die Prozedur manuell schreiben, also procedure Click(Sender: TObject); Damit diese Prozedur auch als Behandlungsroutine bei einem Klick auf einen Button ausgelöst wird, musst du sie natürlich als Behandlungsroutine eintragen. Dies geschieht mit Button1.OnClick := Click; oder eben Image34.OnClick := Click; Du musst dies natürlich für alle Images machen.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von dEluXe
dEluXe

Registriert seit: 30. Sep 2004
Ort: Berlin
12 Beiträge
 
Delphi 5 Enterprise
 
#10

Re: alternative zu 225 onclick-ereignissen ?

  Alt 9. Nov 2004, 23:22
@alcaeus
ok soweit hab ich das verstanden.
Das jedoch bedeutet, dass ich 225 mal
ImageXXX.OnClick := Click; schreiben muss.
geht das nicht auch leichter ?

Und dann ist da noch das Problem, dass ich ja irgendwie die Nummer des Images an die Click-Routine übergeben muss ?


dEluXe
Ich bin nicht schizophren, ich bin schon eine ganze Gruppe
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:43 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