Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Cursor wird nicht angezeigt (https://www.delphipraxis.net/178419-cursor-wird-nicht-angezeigt.html)

user0815 7. Jan 2014 12:12

Cursor wird nicht angezeigt
 
Auf das Form:
1x TButton
1x TEdit
1x TLabel

Der Button dient als Dummy für den Focus.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Label1.Caption := '';
  Edit1.Text := '';
end;

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

procedure TForm1.Edit1Enter(Sender: TObject);
begin
  if Label1.Caption = '' then Eingabe;
end;

procedure TForm1.Eingabe;
var
  Value : String;
begin
  if InputQuery('Caption', 'Prompt', Value) then
  begin
    if trim(Value) <> '' then
    begin
      Label1.Caption := Value;

      Button1.SetFocus; // Kommentar 1*)
      Edit1.SetFocus;
    end;
  end;
end;
Ich wechsel einmal den Focus und kann weiter in das TEdit Feld eingeben, der Cursor wird dabei nicht angezeigt.

1*) = kommentiere ich die Zeile aus, so erscheint der Cursor in dem Eingabefeld aber eine Eingabe ist (ohne einen erneuten Klick ins Feld) nicht möglich.

Frage: Wie bekommen ich den blinkenden Cursor in das aktuelle Eingabefeld & kann auch was eingeben ?

Der schöne Günther 7. Jan 2014 12:35

AW: Cursor wird nicht angezeigt
 
Warum das so ist weiß ich spontan auch nicht, ein Treffer der Suchmaschine meines Vertrauens spricht allerdings:

Zitat:

[...]you've probably done something like show another dialog
from an edit's OnExit or OnEnter event. This is a guaranteed way to
confuse Windows
(not Delphi), since Windows doesn't like the programmer
to change focus (by showing another dialog) while focus is already
changing. The end result is Windows gets confused and whacks the
caret
(BTW, you are asking about the _caret_, not the _cursor_).

Please confirm is this sounds like an accurate description of the
problem. There are some ways to avoid confusing Windows.
Quelle: http://www.delphigroups.info/2/29/324211.html


Als reiner Nutzer erwarte ich ehrlich gesagt ein solches Verhalte auch nicht. Ein normales Textfeld. Ich schicke mich an, dort etwas einzutragen und plötzlich poppen darüber (überflüssige?) Dialoge auf. "Was will er denn jetzt? Lass mich doch meinen Kram eintragen" denken sich dann sicher nicht wenige Nutzer.

user0815 7. Jan 2014 13:14

AW: Cursor wird nicht angezeigt
 
Ist für eine TGauge Anzeige. Der aktuelle Anfangswert ist einzugeben, ist der Max Wert noch nicht vorhanden so ist dieser zuvor einmal einzugeben.

Delphi-Quellcode:
      Button1.SetFocus;
      Edit1.SetFocus;
      PostMessage(Edit1.Handle, WM_SETFOCUS, 0, 0);
so funktioniert es.

p80286 7. Jan 2014 14:24

AW: Cursor wird nicht angezeigt
 
@Günther
du bist der Größte, das hab ich bisher noch nicht gefunden.
Bei mir ist es ein Memo, was angeblich - da es auf die Tastatur reagiert, stimmt es wohl - den Fokus hat aber keinen Cursor und keine Auswahl anzeigt.
Und weil es den Fokus hat, funktioniert onEnter auch nicht (denke ich zumindestens)

Gruß
K-H

Ron67 31. Okt 2019 11:19

AW: Cursor wird nicht angezeigt
 
Ich hatte das gleiche Problem.

In meiner recht komplizierten Anwendung (ORC) wurde erst der Fokus auf das Edit-Feld gesetzt, dann von einer anderen Prozedur auf eine Zelle im Grid gesetzt und dann von der dritten Prozedur nochmal auf das Edit-Feld.

Gibt man ein Zeichen ein, erscheint es im Edit-Feld, aber da blinkt kein Cursor (caret).
Und das Programm wußte selber nicht, wo der Fokus war, hat deshalb Folgefehler produziert.

Die doppelte Zuweisung des Fokus auf das gleiche Edit-Feld ist nicht schlimm, aber das hin und her darf nicht sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:38 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