Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - MouseClick abfragen
ferra - So 23.01.11 16:04
Titel: MouseClick abfragen
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
Narses: Topic aus Windows API verschoben am So 23.01.2011 um 15:06
Narses - So 23.01.11 16:09
Moin und :welcome: im Forum!
ferra hat folgendes geschrieben : |
| 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
ferra - 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:
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)); end;
end; |
Moderiert von
Narses: Delphi-Tags hinzugefügt
Narses - 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 [
http://www.delphi-library.de/topic_auf+Ereignisse+in+FormAnwendungen+warten+AppState+T1_67969.html], 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
ferra - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!