AGB  ·  Datenschutz  ·  Impressum  







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

Objekt.onclick wie geht daS?

Ein Thema von Spike2k3 · begonnen am 15. Mai 2004 · letzter Beitrag vom 15. Mai 2004
Antwort Antwort
Spike2k3

Registriert seit: 20. Aug 2003
73 Beiträge
 
Delphi 7 Enterprise
 
#1

Objekt.onclick wie geht daS?

  Alt 15. Mai 2004, 15:48
Hi leute
Ich da grad n Probelm, ich programmier 17+4 (das Spiel) und muss es nun nur hinbekommen,
dass ein Objekt von mir (ein Bild) eine Onclick Funktion erhält.

Kann ich da einfach Tkarte.onclick nehmen, oder muss ich das irgendwie noch anders machen??

Und wenn ich verschiedene KArten mit Kartensatz[i] erzeugt hab und nun eine davon anklicken will,
geth dann ein Kartensatz[1].onclick???

ODer wie sollte sowas aussehn?

So sieht bei mir meine bisherige Konstruktion aus:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  Tkarte = class(TImage)
  constructor erzeugen;
  procedure ziehen;
  private
  public
  end;
  TForm1 = class(TForm)
    procedure FormActivate(Sender: TObject);
  private
        Karte:Tkarte;
  public
    satzmenge:integer;
  end;

var
  Form1: TForm1;
  satz: array[1..5] of TKarte;
  
implementation
constructor Tkarte.erzeugen;
begin
inherited create (Form1);
parent:=Form1;
Picture.LoadFromFile('.\karten\karten\herz_koenig.bmp');
end;

{$R *.dfm}

procedure Tkarte.ziehen;
begin
Picture.LoadFromFile('.\karten\karten\blank.bmp');
end;

procedure TForm1.FormActivate(Sender: TObject);
var j,i:integer;
begin
j:=150;
randomize;
DoubleBuffered := true;
Satzmenge:=3;
for i:=1 to Satzmenge do
      begin
      J:=j+73;
      Satz[i]:=TKarte.Create(Form1);
      Satz[i].Parent:=Form1;
      Satz[i].height:=96;
      Satz[i].Width:=73;
      Satz[i].left:=5+j;
      Satz[i].top:=150;
      Satz[i].ziehen;
      end;
end;


end.
Drei Karten werden erzeugt, die noch verdeckt sind und wenn ich nun auf eine klicke, soll sie umgedreht werden..
Das is alles kein Problem, nur eben das onclick...
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#2

Re: Objekt.onclick wie geht daS?

  Alt 15. Mai 2004, 15:54
jup, vom prinzip ghet das so. du musst nur noch Karte[x].OnClick eine Prozedure zuweisen, dann wird diese immer aufgerufen, wenn man auf die Karte klickt. Du kannst auch immer die gleiche Funktion nehmen, und dann mit "Sender" entscheiden, welche Karte geklickt wurde.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: Objekt.onclick wie geht daS?

  Alt 15. Mai 2004, 15:54
Hi,

Weise einfach einem Satz[i] einen OnClick Handler zu.




Satz[i].OnClick := SatzOnClick // ...

Delphi-Quellcode:
procedure TForm1.SatzOnClick(Sender: TObject);
begin
  ShowMessage(TImage(Sender).Name);
end;
Thomas
  Mit Zitat antworten Zitat
Spike2k3

Registriert seit: 20. Aug 2003
73 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Objekt.onclick wie geht daS?

  Alt 15. Mai 2004, 16:05
Wo muss ich das:
Satz[i].OnClick := SatzOnClick Denn einfügen???


@Nailor:
Deine Lösung hört sich interessant an, aber ich wie mach ich n das?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: Objekt.onclick wie geht daS?

  Alt 15. Mai 2004, 16:13
Zitat:
@Nailor:
Deine Lösung hört sich interessant an, aber ich wie mach ich n das?
Habe ja den Code dazu gepostet!

Zitat:
Wo muss ich das:
Source:
Satz[i].OnClick := SatzOnClick

Denn einfügen???
z.B nach

Satz[i]:=TKarte.Create(Form1); Satz[i].OnClick := SatzOnClick;
Thomas
  Mit Zitat antworten Zitat
Spike2k3

Registriert seit: 20. Aug 2003
73 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Objekt.onclick wie geht daS?

  Alt 15. Mai 2004, 16:28
oh, ok...wusste ich nich, bin nich soo bewandert, sorry...

Also an der Stelle hab ichs schon probiert, nur kam dann immer:

[Error] Unit1.pas(55): Undeclared identifier: 'SatzOnClick'

Und da hab ich mich gewundert, ob ich das richtig gemacht hab, darum hab ich nochma nachgefragt.
Aber ma im Ernst, dass heisst ja, dass ichs noch nich deklariert hab, aber was ist denn SatzOnklick???

Das hier behebt das Prob. leider nich:
Delphi-Quellcode:
type
  Tkarte = class(TImage)
  constructor erzeugen;
  procedure ziehen;
  procedure SatzOnClick; //<---
  private
  public
  end;
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormActivate(Sender: TObject);
  private
    //Karte:Tkarte;
  public
    satzmenge:integer;
  end;
  Mit Zitat antworten Zitat
Spike2k3

Registriert seit: 20. Aug 2003
73 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Objekt.onclick wie geht daS?

  Alt 15. Mai 2004, 19:56
Kann mir denn keiner helfen????
plzzzzzzz.....
ICh weiss ihr habt Ahnung (*schleim *)...
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

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

Re: Objekt.onclick wie geht daS?

  Alt 15. Mai 2004, 20:00
Probiers mal so:
Delphi-Quellcode:
type
  Tkarte = class(TImage)
  constructor erzeugen;
  procedure ziehen;
  private
  public
  end;
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormActivate(Sender: TObject);
    procedure SatzOnClick(Sender: TObject); //<- Das hier ist wichtig
  private
    //Karte:Tkarte;
  public
    satzmenge:integer;
  end;
SatzOnClick ist eine Ereignisbehandlungsroutine, die du dir selbst erstellt hast. Natürlich musst du weiter unten im Source irgendwo schreiben
Delphi-Quellcode:
procedure TForm1.SatzOnClick(Sender: TObject);
begin
//...
end;
Damit hast du dir eine ganz normale Behandlungsroutine erstellt, die du dann dem OnClick-Ereignis deines TImage zuweisen kannst.

[add]Normalerweise ist hier pushen erst nach 24 Stunden erlaubt/erwünscht/gern gesehen[/add]
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#9

Re: Objekt.onclick wie geht daS?

  Alt 15. Mai 2004, 20:02
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure DeinGeilesOnClick(Sender: TObject);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

procedure TForm1.DeinGeilesOnClick(Sender: TObject);
begin
while random(500) > 1 do windows.Beep(random(1000), random(10));
end;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.OnClick := DeinGeilesOnClick;
end;

end.

hier einfach mal ein haufen code
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Spike2k3

Registriert seit: 20. Aug 2003
73 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Objekt.onclick wie geht daS?

  Alt 15. Mai 2004, 20:13
hehe...
danke leute, nu klappts...
HAtte es unter Tkarte und nich Tform deklariert, das was das prob.

mein geiles onclick is auch geil, nur windows beep probier ich nich ;P
doch...in info am dienstag...meinen Lehrer zur WEissglut treiben
  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:57 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