Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Curser weg? Warum?


cugar - Mo 06.01.03 21:59
Titel: Curser weg? Warum?
Hallo Leute!
Habe eine Eingabemaske erstellt, sobald ein Editfeld den Focus erhält wird ein weiteres Fenster (fsStayOnTop) geöffnet und eine Tabelle angezeigt. Ich setze den Fokus auf mein Haupfenster, allerdings ist der Curser aus
meinem Editfeld weg..
Mit "SetFocus" hatte ich auch kein Erfolg.
Was mache ich da falsch??


Raphael O. - Mo 06.01.03 22:09

setze als allerletztes nochmal den Fokus auf dein edit-Feld!

Fiji-Fighter


cugar - Mo 06.01.03 22:21

Habe es versucht, geht auch nicht. Man kann in dieses Feld schreiben, die Buchstaben sind sichtbar, nur der Curser ist unsichtbar.
Der Ablauf ist so:
Im "LabelEdit3.OnEnter" wird das Zusatzfenster geöffnet mit "Form3.Show"
und "LabelEdit3.setfocus".


Christian S. - Mo 06.01.03 22:27

Könnte es sein, dass Du damit eine Endlosschleife von Ereignissen produzierst? Denn LabelEdit3.SetFocus löst doch wieder das LabelEdit3.OnEnter-Ereignis aus, oder?
Probier doch mal, die OnEnter-Aktion nur dann auszuführen, wenn Form3 noch nicht sichtbar ist. Dann hast Du zumindest nicht mehr die Schleife!


cugar - Mo 06.01.03 22:34

Daran habe ich auch schon gedacht. Es ist so:
Es sind 6 Edit-Felder, in einem wird "Sender" ausgewertet im "OnEnter".

Auszug:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
 if (Form4.Visible)and(LabeledEdit3.Focused=False) then
    Form4.Visible:=False;

 if Sender=LabeledEdit1 then begin
    LabeledEdit1.EditLabel.Font.Style:=labelstil;
 end else if Sender=LabeledEdit2 then begin
    LabeledEdit2.EditLabel.Font.Style:=labelstil;
 end else if Sender=LabeledEdit3 then begin
    LabeledEdit3.EditLabel.Font.Style:=labelstil;
    if not Form4.Visible then
       Form4.Visible:=True;
    LabeledEdit3.SetFocus;
 end;


(07.01. 09:40 Tino) Code-Tags hinzugefügt.


cugar - Mo 06.01.03 22:47

Habbbbe die Lösung!

Die Zeile am Ende mit: "LabeledEdit3.SetFocus" funktioniert nicht da muss folgendes stehen:

Quelltext
1:
2:
if Assigned(LabeledEdit3) then
  PostMessage(LabeledEdit3.Handle,WM_SETFOCUS,0,0);

Der Curser wird dann wieder sichtbar!

Vielen Dank für Deine hilfe.

(07.01. 09:40 Tino) Code-Tags hinzugefügt.


Christian S. - Mo 06.01.03 22:55

Hast Du mal probiert, die Zeile vor dem End; durch

Quelltext
1:
if not LabeledEdit3.Focused then LabeledEdit3.SetFocus;                    

zu ersetzen?

Übrigens: Wenn Du in einer IF-Abfrage nur einen Befehl ausführen lässt, brauchst Du kein Begin und End drum zu machen. Könntest Du demnächst beim Posten die Code-Tags verwenden?

MfG,
Peter