AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Edit.SelectAll beim OnEnter - Probleme
Thema durchsuchen
Ansicht
Themen-Optionen

Edit.SelectAll beim OnEnter - Probleme

Ein Thema von die Suchende · begonnen am 4. Nov 2009 · letzter Beitrag vom 4. Nov 2009
Antwort Antwort
die Suchende

Registriert seit: 27. Mär 2009
16 Beiträge
 
#1

Edit.SelectAll beim OnEnter - Probleme

  Alt 4. Nov 2009, 10:49
Hallo Geimende.

bestimmt ist das total einfach und ich schau nur mal wieder nicht richtig dahinter. Folgendes:

Ich habe ein Programm mit mehreren Eingabefeldern (TEdit). Ich habe mir gedacht, dass es für den Anwender bequemer ist, wenn der Text im Eingabefeld beim Reinklicken markiert wird ... analog, wenn man mit der Tab-Taste durchgeht. Das klappt aber irgendwie nicht, obwohl das Ereignis ausgelöst wird:

Delphi-Quellcode:
procedure TfrmStartseite.EditEnter(Sender: TObject);
begin
  TEdit(Sender).SelectAll;
end;
Wenn ich eine Fehlerabfrage mache geht es doch auch:

Delphi-Quellcode:
procedure TfrmStartseite.TelNummerEditChange(Sender: TObject);
begin
  if Funktionen.isPosNumeric(TEdit(Sender).Text) = false then begin
         TEdit(Sender).SelectAll;

         MessageDlg('Bitte geben Sie eine Zahl ein!'
                 + #10 + #13
                 + 'Bitte korrigieren Sie!'
                 , mtInformation, [mbOK], 0);
         exit;
  end;
end;
Verstehe ich nicht. Ich möchte das Markieren aber auch nicht in das OnClick-Ereignis nehmen, weil man ja auch mal irgendwo in den Text oder wie hier in die Telefonnummer klicken möchte, ohne dass gleich der gesamte Text markiert wird.

könnte mir mal bitte jemand auf die Sprünge helfen.

schon mal Danke
die Suchende
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#2

Re: Edit.SelectAll beim OnEnter - Probleme

  Alt 4. Nov 2009, 11:04
Hallo,

Reihenfolge der Ereignisse:
- OnEnter
- OnMouseDown

MouseDown hebt die Selectierung wieder auf.

Also in OnEnter ein Flag setzen und dann entsprechend in OnMouseDown reagieren.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
die Suchende

Registriert seit: 27. Mär 2009
16 Beiträge
 
#3

Re: Edit.SelectAll beim OnEnter - Probleme

  Alt 4. Nov 2009, 12:07
Danke für die schnelle Antwort,

so was habe ich schon vermutet/ befürchtet ... dafür jetzt extra noch 'ne globale Variable machen zu müssen ... naja


habe übrigens noch was "annormales": im gleichen Programm - meine Editfelder sind auf einem TPageControl untergebracht
- betrifft Editfeld auf einer anderen Seite (anderem TabSheet)
- diesmal Fehlerabfrage im onExit-Ereignis (nicht im ONCange-Ereignis, wie bei der Telefonnummer)

Delphi-Quellcode:
procedure TfrmStartseite.letzteKalEditExit(Sender: TObject);
begin
    if Funktionen.isDateTime(letzteKalEdit.Text) = false then begin
       TEdit(Sender).SetFocus;

       MessageDlg('Die Eingabe der letzten Kalibrierung ist nicht korrekt!' + #10+#13
                   + 'Bitte korrigieren Sie!',
                   mtInformation, [mbOK], 0);
    end;
end;
er geht ordentlich in das Ereignis rein und auch die Auswahl funktioniert. Aber den Text markiert er mir diesmal nicht mit
TEdit(Sender).SelectAll sondern nur mit TEdit(Sender).SetFocus ?

Verstehe ich schon wieder nicht.
die Suchende
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Edit.SelectAll beim OnEnter - Probleme

  Alt 4. Nov 2009, 12:19
Zitat von die Suchende:
... dafür jetzt extra noch 'ne globale Variable machen zu müssen ... naja...
Eine globale Variable brauchst Du ja nicht, maximal ein "Property" deiner Form.
Du könntest aber auch die .Tag eigenschaft des TEdits dazu missbrauchen.

Frei nach dem Motto:

OnEnter:
TEdit(Sender).Tag := 1;

OnExit:
TEdit(Sender).Tag := 0;

OnMouseDown:
If (TEdit(Sender).Tag = 1) then TEdit(Sender).SelectAll;

Und neue Frage neuer Thread
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#5

Re: Edit.SelectAll beim OnEnter - Probleme

  Alt 4. Nov 2009, 12:28
Hallo,
Zitat von die Suchende:
...dafür jetzt extra noch 'ne globale Variable machen zu müssen ...
kannst doch die Tag-Eigenschaft des Edit dafür nutzen:
Delphi-Quellcode:
//OnEnter
  Edit.Tag := 1;

//OnMouseDown
  if Edit.Tag = 1 then
    begin
    Edit.Tag := 0;
    Edit.SelectAll;
    end;
Das "annormales" ist normal
SelectAll selektiert auch, Du siehst es nur nicht, weil die Eigenschaft Edit.HideSelection bei dem Edit auf True gesetzt ist.

Bei SetFocus greift die Eigenschaft Edit.AutoSelect.

//Edit: kein roter Kasten, ehrlich
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:25 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