• 19.04.2024, 13:37
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

delphi: wie bei mausklick TEdit verlassen?

Dienstag, 5. August 2003, 18:09

Ich habe ein problem. Und zwar habe ich bei mir in mein formular ein Tedit feld reingemacht.

Der schreibcursor bleibt jedoch in dem TEdit feld drinnen, bis ich einen anderen knopf im formular andrücke.

Ich möchte aber, daß der cursor bereits das TEdit feld verläßt, wenn ich nur mit der maus auf irgendeine andere freie stelle in dem formular drücke.

geht das?
Wie kann man das machen?
Dieses Youtube-Video ist aufgrund von Urheberrechtsbeschränkungen in deinem Land nicht verfügbar.

Re: delphi: wie bei mausklick TEdit verlassen?

Dienstag, 5. August 2003, 18:36

Schau dir mal die Ereignisse "OnMouse*" und die Funktion "SetFocus" an

Re: delphi: wie bei mausklick TEdit verlassen?

Dienstag, 5. August 2003, 19:08

ok danke. geht jetzt!
Dieses Youtube-Video ist aufgrund von Urheberrechtsbeschränkungen in deinem Land nicht verfügbar.

Re: delphi: wie bei mausklick TEdit verlassen?

Dienstag, 5. August 2003, 19:24

PAB das ist fies!

Spätestens wenn er das erste Panel einsetzt und nur OnMouse im Form hat, dann ist's vorbei mit dem "überall" hinklicken...

Bei sowas muß man die Eventqueue selber auswerten...

Beispiel:

Quellcode

1
2
3
4
5
6
7
procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
  if(Msg.message = 517)then
  begin
            TabControl1.Perform(513,msg.wParam,msg.lParam);
  end;
end;


und eingebunden wird das in Form.OnCreate so:

Quellcode

1
Application.OnMessage := AppMessage;


Also was macht das Beispiel eigentlich? Nun, der Code soll bewirken, das ein Rechtsclick auf TabControl1 auch die Tabs umschaltet (tut es normal nicht und das ist der einzige Weg, das es das doch macht). Also fang ich alle Rechtsklicks (EventID = 517) ab und sage TabControl1 es soll einen Linksclick (EventID=513) verarbeiten.

In deinem Fall müßtest du dann also 513 und 517 abfangen und den Focus aus TEdit nehmen.

Achja, mit

Quellcode

1
Handled := true;

verhindert man, das dieses Event noch weiter verarbeitet wird. Ohne änderung wird das Signal so weiter verarbeitet, als wäre nichts passiert.

gruß, Texx
We'll never stop living this way!

Re: delphi: wie bei mausklick TEdit verlassen?

Dienstag, 5. August 2003, 21:45

Hm.. ich habs jetzt gerade eilig. Verstehe im moment nur bahnhof.

Ich habe folgendes gemacht:



---
procedure TForm1.FormClick(Sender: TObject);
begin
Button1.SetFocus;
end;
---


Das onmouse habe ich nicht benutzt, weil ich vorher schon das mit dem TForm1.FormClick herausgefunden hatte.

Das mit dem SetFocus wußte ich allerdings nicht. Deshalb konnte ich vorher nicht fortsetzen.

Hat meine gegenwertige methode denn auch irgendwelche nachteile?
Dieses Youtube-Video ist aufgrund von Urheberrechtsbeschränkungen in deinem Land nicht verfügbar.

Re: delphi: wie bei mausklick TEdit verlassen?

Dienstag, 5. August 2003, 22:23

@Texx:
Hatte mich verlesen. Ich dachte, er wollte das schon ändern, wenn er das Edit verlässt.
Dann hätte ein OnMouseOut gereicht.

Allerdings seh ich grad, dass es in Delphi selbst kein OnMouseOut gibt, hatte ich wohl mal hinzugefügt :P

Re: delphi: wie bei mausklick TEdit verlassen?

Mittwoch, 6. August 2003, 11:46

@fksystems: Deine Lösung hat den Nachteil, das sie nur fuktioniert, wenn der Benutzer auf die TForm selber clickt. Wenn du aber noch TPanels oder andere Komponenten (die keinen Fokus bekommen können, bsp.: TImage) im Form hast, dann wird das onClick vom TForm beim clicken auf diese Komponenten nicht ausgeführt. Du hast also die Wahl. Bei allen Komponenten das onClick zu belegen oder die Eventqueue nach meinem Vorschlag zu überwachen und dann Ruhe zu haben.

@PAB: onMouseOut gibt es auch standartmäßig in Delphi, nur leider nicht in allen Komponenten. Klingt komisch, ist aber so... (weiß aich nicht warum das so ist)

gruß, Texx
We'll never stop living this way!

Re: delphi: wie bei mausklick TEdit verlassen?

Mittwoch, 6. August 2003, 12:02

Ich meine, die kann man auch nachrüsten.
Aber egal

Re: delphi: wie bei mausklick TEdit verlassen?

Mittwoch, 6. August 2003, 16:47

Und ich meinte, das es teilweise schon standrtmäßig dabei ist... :P

gruß, Texx
We'll never stop living this way!

Re: delphi: wie bei mausklick TEdit verlassen?

Mittwoch, 6. August 2003, 16:52

ok danke. Ich habe die umständliche, gelb hinterlegte maßnahme jetzt eingebunden.

Das handled:=true darf man nicht machen, weil sonst alle mausklicks abgefangen werden.

Scheint aber jetzt zu funktionieren.

Wie ist das denn? Diese events wie 513 und 517: Woher weißt du, daß das die sind?

Kriegt man da auch irgendwo ne liste her wo die alle drinstehen?

Oder lohnen sich die anderen zum angucken sowieso nicht?
Dieses Youtube-Video ist aufgrund von Urheberrechtsbeschränkungen in deinem Land nicht verfügbar.

Re: delphi: wie bei mausklick TEdit verlassen?

Mittwoch, 6. August 2003, 18:33

Richtig, handled:=true sagt aus, das du den Event schon ausgewertet und verarbeitet hast und er nicht mehr weiterverarbeitet werden soll. (er wurde also 'gehandled')

-

Die Events wie Linksklick und Rechtsklick hab ich selber rausgefunden (Siehe 1), weil die (meines Wissens nach) nirgends in Delphi definiert sind. Andere hingegen, wie 'WM_KEYDOWN' sind (IMO) in windows.pas definiert.

1) Rausgefunden hab ich die, indem ich alle events einfach mal in eine Liste geschrieben hab und geguckt hab, was bei einem Links- bzw. Rechtsklick so alles für Messages kommen. So kann man so ziemlich alles rausfinden...

Alle Messeges die die VCL definiert hat fangen mir WM_ an. ;)

Also viel vergnügen!

gruß, Texx
We'll never stop living this way!

Re: delphi: wie bei mausklick TEdit verlassen?

Mittwoch, 6. August 2003, 18:36

ok gut.
Dieses Youtube-Video ist aufgrund von Urheberrechtsbeschränkungen in deinem Land nicht verfügbar.

Re: delphi: wie bei mausklick TEdit verlassen?

Mittwoch, 6. August 2003, 19:37

Zitat von »Texx«

Und ich meinte, das es teilweise schon standrtmäßig dabei ist... :P

gruß, Texx


Aber erst seit Delphi 6 oder 7.
Vorher musste man die selbst einbaun.

Re: delphi: wie bei mausklick TEdit verlassen?

Donnerstag, 7. August 2003, 07:23

also ich hab delphi 7.

Heißt das dann, daß dann onmouseout genauso oder viel einfacher ginge??
Dieses Youtube-Video ist aufgrund von Urheberrechtsbeschränkungen in deinem Land nicht verfügbar.

Re: delphi: wie bei mausklick TEdit verlassen?

Donnerstag, 7. August 2003, 13:11

Also ich hab Delphi4 und irgendwie weiß ich alzheimermäßig auch nicht welche Komponenten das betrifft (mit dem MouseLeave). :-[

Aber wirklich was bringen tut es dir auch nichts, da es definitiv nicht TEdit ist. Außerdem willst du, nach deiner Beschreibung, ja erst mit einem Klick aus dem Feld raus, und nicht schon wenn die Maus woanders ist.

gruß, Texx
We'll never stop living this way!