Autor Beitrag
Stread
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 188

Win 7
Delphi XE
BeitragVerfasst: Mi 02.09.09 20:30 
Ich habe 3 Edit Felder. Der Focus ist am Anfang bei Edit1. Wenn ich einen Button drücke soll der Focus auf Edit2 gehen. Das habe ich schon.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure THauptfenster.Button1Click(Sender: TObject);
begin
Edit2.SetFocus;
end;

Wenn ich nun nocheinmal auf den gleichen Button drücke soll der Focus auf Edit3 liegen. Mit if-Abfrage funktioniert es nicht. Wie dann?

Danke

Stread


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mi 02.09.2009 um 23:19
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Mi 02.09.09 20:35 
Dann machst du bei der if-Abfrage wohl was falsch, denn damit wirst dus machen müssen.

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mi 02.09.09 20:56 
Mal abgesehen davon, dass ich grad keinen Sinn hinter dem Vorhaben sehe (ich persönlich wechsel den Focus mit der Tab-Taste, oder wenns sein muss mit der Maus), musst du dir auch merken, ob / wie oft der Button schon geklickt wurde. Dann klappts auch mit der If-Abfrage.

_________________
PROGRAMMER: A device for converting coffee into software.
gfehmke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 24



BeitragVerfasst: Do 03.09.09 10:48 
Hi

Per Abfrage von Focused feststellen, welches Edit den Focus hat und entsprechend reagieren??

ausblenden Delphi-Quelltext
1:
if Edit1.Focused then . . . . .					

G.
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 03.09.09 11:22 
Du wirst Dir merken müssen, wo der Focus ist und entsprechend weiterschalten. Das Problem ist, dass der Button ja beim Klick automatisch auch den Focus erhält. Sonnst könnte man einfach mit
ausblenden Delphi-Quelltext
1:
PostMessage(Handle, WM_NEXTDLGCTL, 00);					

den Focus weitersetzen.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Do 03.09.09 17:34 
Hallo,

ich verstehe den Sinn auch nicht so richtig.

Hier mal ein Ansatz, man braucht keine Klicks zu zählen, sich nicht merken welches Edit zuletzt den Focus hatte und keinen Code für den Button zur Auswertung/Weiterverwendung der Daten aus den Editfeldern. Eine Verarbeitung der Daten aus den Editfeldern erfolgt auch wenn eines der Editfelder auf anderem Wege(Tab-Taste etc.) verlassen wird.

Die Editfelder bekommen im OI in der Eigenschaft Edit.Tag die gewünschte Reihenfolge zugewiesen.

Der gesamte Code in einem OnExit-Event-Handler der allen Edits zugewiesen wird:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.AllEditExit(Sender: TObject);
begin
  //Vor Wechsel zum nächsten Edit Daten verarbeiten, z.B. 
  Caption := TEdit(Sender).Text;
  if ActiveControl = Button1 then
    case TEdit(Sender).Tag of
      1 : Edit2.SetFocus;
      2 : Edit3.SetFocus;
      3 : Edit1.SetFocus;
    end;
end;


Erläuterung:
Klickt man auf den Button wird das Ereignis OnExit der Editfelder ausgelöst.
Das ActiveControl ist dann schon Button1, Sender das Edit das den Focus verliert.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )