AGB  ·  Datenschutz  ·  Impressum  







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

OnClick abfangen

Ein Thema von Quake · begonnen am 13. Apr 2007 · letzter Beitrag vom 16. Apr 2007
Antwort Antwort
Seite 1 von 2  1 2      
Quake

Registriert seit: 25. Aug 2003
222 Beiträge
 
Delphi 7 Enterprise
 
#1

OnClick abfangen

  Alt 13. Apr 2007, 10:55
Hallo,

In einem Form gibt es ja die Möglichkeit, mit KeyPreview einen Tastendruck zuerst im Form auszuwerten und danach erst im Steuerelement. Gibt es sowas auch für einen Mausklick?
Oder kann ich aus Steuerelementensicht, bei einem Klick darauf das Mausklick-Ereignis abfangen bevor das Steuerelement den Focus erhält.
Ich möchte also, dass das Steuerelemet zwar die Klicks verarbeitet oder dabei nicht den Focus bekommt.

ciao
Martin
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#2

Re: OnClick abfangen

  Alt 13. Apr 2007, 11:14
Hallo Martin,

falls es sich um einen Button handelt, wäre es das einfachste Du verwendest einen SpeedButton, da dieser von Hause aus keinen Focus erhält.
Uwe
  Mit Zitat antworten Zitat
Quake

Registriert seit: 25. Aug 2003
222 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: OnClick abfangen

  Alt 13. Apr 2007, 11:27
Nein, leider ist es kein Button, es geht um eine ListBox.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: OnClick abfangen

  Alt 13. Apr 2007, 11:45
Du kannst ja den Focus wieder woanderes hinsetzen, nachdem mit der Maus da reingeklickt wurde.


Delphi-Quellcode:
procedure TForm1.ListBox1MouseUp...;
begin
  Edit.SetFocus;
  // oder Form1.ActiveControl := Edit1;
  // oder ...
end;
$2B or not $2B
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#5

Re: OnClick abfangen

  Alt 13. Apr 2007, 11:50
Vielleicht so

Delphi-Quellcode:
procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 LastFocus := Form1.ActiveControl;
end;

procedure TForm1.ListBox1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 Form1.ActiveControl := LastFocus;
end;
Uwe
  Mit Zitat antworten Zitat
Quake

Registriert seit: 25. Aug 2003
222 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: OnClick abfangen

  Alt 13. Apr 2007, 12:13
Das funktionier bei mir nicht, da im Steuerelement, welches verlassen wurde OnExit ausgelöst wird, und das darf nicht sein. Das OnExit soll nur ausgelöst werden, wenn ich auf irgend ein anderes Steuerelement klicke, aber nicht wenn ich auf die eine ListBox klicke.

Ich glaube manchmal, dass ich zu hohe Ansprüche an die Entwicklungsumgebung bzw. an meine eignenen Programme habe.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: OnClick abfangen

  Alt 13. Apr 2007, 12:14
dann eher so:
Delphi-Quellcode:
procedure TForm1.ListBox1MouseMove...;
begin
  if ActiveControl <> ListBox1 then
    LastFocus := ActiveControl;
end;
denn bis ListBox1MouseUp aufgerufen wurde, hatte sich vorher mal die Maus über der ListBox befunden/bewegt und LastFocus wäre demnach ListBox1
$2B or not $2B
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#8

Re: OnClick abfangen

  Alt 13. Apr 2007, 12:28
Zitat von himitsu:
dann eher so:
Delphi-Quellcode:
procedure TForm1.ListBox1MouseMove...;
begin
  if ActiveControl <> ListBox1 then
    LastFocus := ActiveControl;
end;
denn bis ListBox1MouseUp aufgerufen wurde, hatte sich vorher mal die Maus über der ListBox befunden/bewegt und LastFocus wäre demnach ListBox1
Bin mir jetzt auch nicht sicher, aber wenn MouseMove Eintritt, hat in diesem Moment doch ein anderes Steuerelement den Focus. Dieses wird in LastFocus gespeichert un nach MouseUp wieder übergeben.

Ok, vielleicht ist ja auch falsch.
Uwe
  Mit Zitat antworten Zitat
Quake

Registriert seit: 25. Aug 2003
222 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: OnClick abfangen

  Alt 13. Apr 2007, 12:32
Aber wenn ich auf die ListBox klicke, ist das erste was passiert, sie bekommt den Focus und damit wird OnExit meines letzten Steuerelemenmts ausgelöst.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

Re: OnClick abfangen

  Alt 13. Apr 2007, 13:00
MouseMove tritt immer ein, wen die Maus über das Element fährt, egal ob dieses den Fokus hat, oder nicht.



OnExit ist zwar schön, nur kennt nicht alles dieses Ereignis und für jedes Element auf der Form dieses einzurichten könnte auch noch ein bissl viel sein.

Da macht sich etwas, welches nur in der ListBox und/oder Forum ist einfacher.
$2B or not $2B
  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 19:02 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