AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi eine Aktion solange ausführen, wie Maustaste gedrückt ist
Thema durchsuchen
Ansicht
Themen-Optionen

eine Aktion solange ausführen, wie Maustaste gedrückt ist

Ein Thema von BAMatze · begonnen am 22. Aug 2008 · letzter Beitrag vom 22. Aug 2008
Antwort Antwort
Seite 1 von 2  1 2      
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#1

eine Aktion solange ausführen, wie Maustaste gedrückt ist

  Alt 22. Aug 2008, 15:23
Hallo an alle,

Ich habe ein Problem. Ich will eine bestimmte Aktion solange ausführen, wie die linke Maustaste gedrückt ist. Habe mich hier schon durch einige ähnliche Beiträge geklickt und folgenden Quellcode geschrieben, der anscheinend bei den anderen funktioniert hat.

Code:
procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

  if shift = [ssleft] then Lb_Pos.Caption := 'Maustaste gedrückt'
  else Lb_Pos.Caption := 'Position: '+ inttostr(MMC_getPos);

end;
Meine Frage jetzt ist, warum mir in dem Label Lb_Pos nicht die Schrift "Maustaste gedrückt" angezeigt wird. Die Funktion MMC_getPos kann ignoriert werden, da diese durch eine externe DLL eingeführt wird und auch einen int-Wert zurückgibt.

Es wird durch Delphi kein Fehler angegeben.
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#2

Re: eine Aktion solange ausführen, wie Maustaste gedrückt is

  Alt 22. Aug 2008, 15:27
Bei mir gibts nen Ereignis OnKeyPressed:
procedure Button1KeyPress(Sender: TObject; var Key: char); Damit müsste es doch funktionieren oder?
Den virtuellen Key für die linke Maustaste findest sicher bei google.de

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: eine Aktion solange ausführen, wie Maustaste gedrückt is

  Alt 22. Aug 2008, 15:32
Wäre OnMouseDown nicht angebrachter?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: eine Aktion solange ausführen, wie Maustaste gedrückt is

  Alt 22. Aug 2008, 15:36
Zitat von DeddyH:
Wäre OnMouseDown nicht angebrachter?
Um DeddyHs Vorschlag mal weiterzuführen:

Delphi-Quellcode:
procedure TForm1.Button1MouseDown(Sender: TObject);
begin
  Aktion.Starten;
end;

procedure TForm1.Button1MouseUp(Sender: TObject);
begin
  Aktion.Beenden;
end;
Allerdings kann der Benutzer die Maustaste auch außerhalb des Buttons loslassen, so das Button1.OnMouseUp nicht ausgeführt wird.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: eine Aktion solange ausführen, wie Maustaste gedrückt is

  Alt 22. Aug 2008, 15:42
DAs mit ONMouseDown funktioniert, allerdings nur 1 mal und wenn ich eine While-Schleife mache, produziere ich eine Unendlich-Schleife und muss es abbrechen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: eine Aktion solange ausführen, wie Maustaste gedrückt is

  Alt 22. Aug 2008, 15:45
Zitat von Neutral General:
Allerdings kann der Benutzer die Maustaste auch außerhalb des Buttons loslassen, so das Button1.OnMouseUp nicht ausgeführt wird.
Komisch, bei mir wird das auch außerhalb des Buttons ausgeführt.

@BAMatze: Hast Du ein Application.ProcessMessages in Deiner Schleife?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
kaiser1401

Registriert seit: 6. Mär 2006
Ort: Gescher
157 Beiträge
 
Delphi 7 Professional
 
#7

Re: eine Aktion solange ausführen, wie Maustaste gedrückt is

  Alt 22. Aug 2008, 15:46
Dann solltest du bei OnMouseDown einen timer starten der in einem gewissen Interwall die gewünscht Aktion ausführt. Im OnMouseUp hälst du ihn dann wieder an. Enabled:=false;
inc(i);
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: eine Aktion solange ausführen, wie Maustaste gedrückt is

  Alt 22. Aug 2008, 15:49
Zitat von DeddyH:
Zitat von Neutral General:
Allerdings kann der Benutzer die Maustaste auch außerhalb des Buttons loslassen, so das Button1.OnMouseUp nicht ausgeführt wird.
Komisch, bei mir wird das auch außerhalb des Buttons ausgeführt.

@BAMatze: Hast Du ein Application.ProcessMessages in Deiner Schleife?
Hab das ebend getestet, bei mir wird das nur ausgeführt, wenn ich wirklich den Button klicke, allerdings leider immer nocht mit If-Anweisung nur 1 mal und bei while-Schleife unendlich mal.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: eine Aktion solange ausführen, wie Maustaste gedrückt is

  Alt 22. Aug 2008, 15:50
Zeig mal Deinen Code.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: eine Aktion solange ausführen, wie Maustaste gedrückt is

  Alt 22. Aug 2008, 15:50
Zitat von kaiser1401:
Dann solltest du bei OnMouseDown einen timer starten der in einem gewissen Interwall die gewünscht Aktion ausführt. Im OnMouseUp hälst du ihn dann wieder an. Enabled:=false;
Ah danke das ist eine gute Idee. Werde ich mal probieren.
  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 06:09 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