Autor Beitrag
ferra
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 23.01.11 16:04 
Guten Abend,

ich bin ganz neu in Delphi und stehe bereits auf meinem ersten Problem.

Ich möchte innerhalb einer gestarteten Prozedur abfragen, ob die linke Maustate gedrückt ist.

Ich stellte mir das ganze etwas einfach vor und hab es anfangs mit 'if TMouseButton(mbleft) = true then' probiert. Leider sagte er mir inkompatible Typen.
Danach folgten eine ganze Reihe anderer Versuche.

Kann mir jemand von euch weiterhelfen?

Ich arbeite übrigens in Delphi 6.

MfG


Moderiert von user profile iconNarses: Topic aus Windows API verschoben am So 23.01.2011 um 15:06
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 23.01.11 16:09 
Moin und :welcome: im Forum!

user profile iconferra hat folgendes geschrieben Zum zitierten Posting springen:
Ich möchte innerhalb einer gestarteten Prozedur abfragen, ob die linke Maustate gedrückt ist.
Geht es um einen Ereignishandler, der zu einer Komponente gehört? Normalerweise wird dir (bei den Ereignissen, wo das Sinn macht) hier der Status als Parameter mitgeliefert. :idea: Oder ist das eine Methode (bzw. Prozedur), die du unabhängig vom Formular-Kontext verwendest?

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
ferra Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 23.01.11 16:31 
Also das ganze soll später ein kleines Spielchen nach Zelda-Art werden.

Dabei habe ich bis jetzt alles fertig, außer die Steuerung über die Maus.

Probeweise habe ich sämtliche benötigten Prozeduren und Funktionen auf einen Button gelegt, sodass das Spiel startet, wenn ich da draufklicke.

Daher sieht die Prozedur so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button1Click(Sender: TObject);
var blabla:integer;
begin
  KarteLaden('source\karten\karte1.txt');
  GrafikenLaden();
  blabla:=0;
  while blabla<33 do
    begin
    KarteInBufferSchreiben(blabla+10,blabla+10,1);
    KarteAnzeigen(10,10);
    blabla:=blabla+1;
    if TMouseButton(mbleft) = true then  showmessage(inttostr(mouse.CursorPos.x));   //Hier scheiter ich...
    end;

end;


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 23.01.11 16:44 
Moin!

Ich fürchte, du hast da einen Konzeptfehler drin, und sei es auch nur in deinem "Test". Hier ist ein FAQ-Beitrag, der dein Problem behandelt, auch wenn es auf den ersten Blick nicht danach aussieht. ;) Du arbeitest nämlich mit einer while-Schleife, die deinen Spielfluss kapselt, das wird aber mit einer Windows-Formular-Anwendung nicht klappen, da so etwas ereignisorientiert gemacht werden muss. :idea: Am Ende des Artikels ist ein Link zu einem Memory-Spiel-Tutorial, in dem das Konzept "Ereignisorientiertes Spiel" vielleicht etwas deutlicher (auch mit Code) zu sehen ist.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
ferra Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 23.01.11 16:56 
Guten Abend,

danke schön. Ich hab das ganze nun geändert und es scheint auch logischer. Es funktioniert nun auch.

Danke nochmals. :)

MfG ferra