![]() |
Objekt.onclick wie geht daS?
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:
Drei Karten werden erzeugt, die noch verdeckt sind und wenn ich nun auf eine klicke, soll sie umgedreht werden..
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. Das is alles kein Problem, nur eben das onclick... |
Re: Objekt.onclick wie geht daS?
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.
|
Re: Objekt.onclick wie geht daS?
Hi,
Weise einfach einem Satz[i] einen OnClick Handler zu.
Delphi-Quellcode:
// ...
Satz[i].OnClick := SatzOnClick
Delphi-Quellcode:
procedure TForm1.SatzOnClick(Sender: TObject);
begin ShowMessage(TImage(Sender).Name); end; |
Re: Objekt.onclick wie geht daS?
Wo muss ich das:
Delphi-Quellcode:
Denn einfügen???
Satz[i].OnClick := SatzOnClick
@Nailor: Deine Lösung hört sich interessant an, aber ich wie mach ich n das? |
Re: Objekt.onclick wie geht daS?
Zitat:
Zitat:
Delphi-Quellcode:
Satz[i]:=TKarte.Create(Form1);
Delphi-Quellcode:
Satz[i].OnClick := SatzOnClick;
|
Re: Objekt.onclick wie geht daS?
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; |
Re: Objekt.onclick wie geht daS?
Kann mir denn keiner helfen???? :cry:
plzzzzzzz..... ICh weiss ihr habt Ahnung (*schleim ;)*)... |
Re: Objekt.onclick wie geht daS?
Probiers mal so:
Delphi-Quellcode:
SatzOnClick ist eine Ereignisbehandlungsroutine, die du dir selbst erstellt hast. Natürlich musst du weiter unten im Source irgendwo schreiben
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;
Delphi-Quellcode:
Damit hast du dir eine ganz normale Behandlungsroutine erstellt, die du dann dem OnClick-Ereignis deines TImage zuweisen kannst.
procedure TForm1.SatzOnClick(Sender: TObject);
begin //... end; [add]Normalerweise ist hier pushen erst nach 24 Stunden erlaubt/erwünscht/gern gesehen[/add] |
Re: Objekt.onclick wie geht daS?
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 ;) |
Re: Objekt.onclick wie geht daS?
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 :D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz