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 2 von 2     12   
uwewo

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

Re: OnClick abfangen

  Alt 13. Apr 2007, 13:04
Zitat von Quake:
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.
Stimmt, funktioniert leider nicht, nur wenn Du die Maus beim Klick nicht bewegst,das ist allerdings fast unmöglich.

Das hier funktioniert allerdings doch, Dank himitsu

Delphi-Quellcode:
var
  Form1: TForm1;
  LastFocus : TWinControl;


implementation

{$R *.DFM}

//------------------------------------------------------------------------------

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if ActiveControl <> ListBox1 then
  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
Benutzerbild von Light
Light

Registriert seit: 3. Feb 2006
Ort: Paderborn NRW
123 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: OnClick abfangen

  Alt 13. Apr 2007, 13:08
Hi Ihr,

dann Frag doch in deinem OnExit des anderen Steuerelements ab,
ob der Fokus jetzt auf die Listbox gesetzt wurde,
und falls ja setzt du ihn wieder zurück
und falls nein kannst du dein eigentliches OnExit auslösen:

Delphi-Quellcode:
procedure TForm1.OnExit(Sender: TObject);
begin
  if ( Form1.ActiveControl.Name = ListBox1 ) //oder so ähnlich *g*
  then
    begin
      Sender.SetFocus; //oder so ähnlich ^^
    end
  else
    begin
      //Mache was du sonst normalerweise in OnExit gemacht hättest!
    end;
end;
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: OnClick abfangen

  Alt 13. Apr 2007, 13:09



Zitat von uwewo:
Stimmt, funktioniert leider nicht, nur wenn Du die Maus beim Klick nicht bewegst,das ist allerdings fast unmöglich.
Schon allein wenn du die Maus nur über die ListBox bewegst würde OnMouseMove ausgelöst.
und du mußt ja die Maus erstmal über die ListBox schieben, damit du draufklicken dannst.
(es sei denn das Programm startet und die Maus ist schon reinzufällig an der richtigen Stelle)
$2B or not $2B
  Mit Zitat antworten Zitat
uwewo

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

Re: OnClick abfangen

  Alt 13. Apr 2007, 13:18
Zitat von himitsu:
Schon allein wenn du die Maus nur über die ListBox bewegst würde OnMouseMove ausgelöst.
und du mußt ja die Maus erstmal über die ListBox schieben, damit du draufklicken dannst.
(es sei denn das Programm startet und die Maus ist schon reinzufällig an der richtigen Stelle)
Ich gebe Dir ja Recht und habe es auch ausprobiert, das Problem ist das MouseMove auch beim Klick ausgeführt wird, und deshalb LastFocus = ListBox ist.

Ansonsten wäre es OK.
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von Light
Light

Registriert seit: 3. Feb 2006
Ort: Paderborn NRW
123 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: OnClick abfangen

  Alt 13. Apr 2007, 13:59
HiIhr,

Funktioniert den meine Überlegung oder hab ich irgendwas übersehen / lesen??

Leuchtende Grüße

Stefan

PS: Der Link ist eigentlich nur der Aurfruf eines Ankers,
aber nur den Akner will er nicht als Link anerkennen.
Vergleiche SELFHTML
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: OnClick abfangen

  Alt 13. Apr 2007, 14:10
müßte gehen (denk ich jetzt mal)
aber so geht es dann halt nur dafür, wo du diese Ereignisprozedur angegeen hast (darfst dann also nichts vergessen, da du es ja bei JEDER andendern Komponenten eintragen mußt)
Delphi-Quellcode:
procedure TForm1.IrgendwasOnExit(Sender: TObject);
begin
  if Form1.ActiveControl = ListBox1 then
    begin
      Sender.SetFocus;
    end
  else
    begin
      //Mache was du sonst normalerweise in OnExit gemacht hättest!
    end;
end;

// ach, ich liebe ja Kurzformen ^^
procedure TForm1.IrgendwasOnExit(Sender: TObject);
begin
  if Form1.ActiveControl <> ListBox1 then begin
    //Mache was du sonst normalerweise in OnExit gemacht hättest!
  end else Sender.SetFocus;
end;

// oder falls man nichts anderes machen möchte
procedure TForm1.IrgendwasOnExit(Sender: TObject);
begin
  if Form1.ActiveControl = ListBox1 then
    Sender.SetFocus;
end;

[add]
Zitat von Light:
PS: Der Link ist eigentlich nur der Aurfruf eines Ankers,
aber nur den Akner will er nicht als Link anerkennen.
[url] prüft vor der Umwandlung auf gültige URLs und anker gehören bei der hier verwendeten Definition halt nicht dazu

aber schau in die Posts (da bei der #Nummer)
$2B or not $2B
  Mit Zitat antworten Zitat
Quake

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

Re: OnClick abfangen

  Alt 16. Apr 2007, 09:02
Hallo,

ich habe erst jetzt wieder Zeit weiter zu machen .

Ja das sieht sehr Erfolgsversprechend aus. Wenn die Behandlung bei allen anderen Steuerelementen gleich ist, kann in allen Steuerelementen die selbe Procedure angegeben werden und muss nicht x-mal geschrieben werden.

Vielen Dank erstmal
ciao
Martin
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:56 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