Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TValueListEditor: Zelle Focus geben (https://www.delphipraxis.net/122770-tvaluelisteditor-zelle-focus-geben.html)

blackdrake 21. Okt 2008 23:20


TValueListEditor: Zelle Focus geben
 
Hallo.

Gibt es eine Möglichkeit, beim TValueListEditor einer Zelle, z.B. [1, 1] - in diesem Fall die erste editierbare Zelle den Focus zu geben?

Wenn ich nur vle.SetFocus() schreibe, dann bekommt zwar die ganze Komponente den Fokus, aber:

a) die zuletzt editierte/selektierte Zelle hat den Fokus
b) der Cursor blinkt nicht - erst, wenn man etwas eingegeben hat.

Delphi-Quellcode:
procedure TSearchForm.form_show(Sender: TObject);
var
  i: integer;
begin
  // Clear value list's values
  for i := 1 to vle.RowCount - 1 do
  begin
    vle.Cells[1, i] := '';
  end;

  // ToDo: Zelle [1, 1] markieren?
end;
Gruß
Daniel Marschall

Adler 24. Okt 2008 17:28

Re: TValueListEditor: Zelle Focus geben
 
Hallo blackdrake,

vielleicht hilft dir folgender Link weiter:
http://delphiportal.de/541-einer-zel...en-focus-geben

blackdrake 25. Okt 2008 11:35

Re: TValueListEditor: Zelle Focus geben
 
Hallo.

Vielen Dank für die Antwort.

Ich hatte die ganze Zeit nach einer Methode á la Select(), SelCell() etc. gesucht und auch bei Google kein brauchbares Ergebnis gefunden. Vielen Dank für den Link!

Das mit dem Selektieren funktioniert nun, jedoch besteht immer noch Problem B:

1. Wenn ich die Row:=, Col:=, .SetFocus Prozedur durchgeführt habe, hat die Zelle zwar den Fokus, aber es ist kein Blinke-Cursor sichtbar, der dem Benutzer verrät "hier kann man Eintippen". Der Textcursor wird erst sichtbar, wenn der Benutzer ein Zeichen eintippt!

2. Und was eigentlich noch schlimmer ist: Ist die (nicht sichtbar) selektierte Zelle mit einem Inhalt gefüllt, so müsste ja eigentlich der Text mit der Highlight-Farbe unterlegt sein. Ist es aber nicht! Sobald der Benutzer einen Buchstaben eintippt, ist der Text in der Zeile weg. Der Benutzer weiß also gar nicht, dass er sich im Überschreiben-Modus befunden hat und der Text ist weg.

Kann dieses Fehlverhalten (1, 2) jemand bestätigen? Ich nutze Turbo Delphi.

3. Außerdem wäre es mir wirklich lieber, wenn eine selektierte Zelle nicht den Text zum Überschreiben markieren würde, sondern lediglich den Textcursor an das Ende des Textes setzen würde. Ich frage mich, was die VCL-Entwickler gedacht haben, als sie das Teil erstellt haben...

Gruß
blackdrake

blackdrake 26. Okt 2008 20:32

Re: TValueListEditor: Zelle Focus geben
 
Problem #1 und #2 sind durch einen Bug begründet, der nur im OnShow-Ereignis auftritt. Näheres dazu habe ich hier beschrieben: http://www.delphipraxis.net/internal...=957242#957242

Zu Problem #3 habe ich folgende Lösung erarbeitet: http://devboard.viathinksoft.de/view...php?f=34&t=778


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