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 SelText bei ComboBoxen buggy? (https://www.delphipraxis.net/15619-seltext-bei-comboboxen-buggy.html)

Neg 1. Feb 2004 16:15


SelText bei ComboBoxen buggy?
 
Kann es sein, dass die Eigenschaft SelText der ComboBox ein wenig buggy implementiert ist? SelText gibt ja den aktuell selektierten Text zurück. Bei Edits und MemoBoxen funktioniert das wunderbar, auch wenn die Komponente gerade nicht den Fokus besitzt. Schließlich ist diese Selektierung ja eigentlich unabhängig von der aktuell tatsächlich sichtbaren Markierung (durchs Fokussieren). Bei der ComboBox scheint dies nicht so zu sein. Sobald die Komponente nicht mehr den Fokus besitzt, scheint sie ihre Selektierung zu vergessen und somit liefert SelText immer den Leerstring und SelStart immer 0. Wenn ich versuche zu tricksen und der ComboBox einfach vor der Abfrage kurz den Fokus "zurück gebe", dann wird automatisch der gesammte Text markiert. :wall:

Gibt es eine Möglichkeit dieses Verhalten der ComboBox irgendwie zu umgehen?

Was ich machen will:
Mein Programm soll eine interne "Character Map" besitzen, mit der man Zeichen, die man nicht auf der Tastatur hat und die man sonst über umständliche Tastencodes eingeben müsste, per Knopfdruck in eine beliebige Eingabe-Komponente des Hauptforms einfügen kann. Die Character Map wird als Unterformular geöffnet, so dass keine Möglichkeit besteht, der ComboBox nicht ihren Fokus "weg zu nehmen". Die OnClick-Methode der Buttons der Character Map sieht so aus:

Delphi-Quellcode:
procedure TFormCharmap.HandleCharButtonClick(Sender: TObject);
var
  Key: integer;
begin
  Key:=(Sender as TButton).Tag;

  if (FormMain.ActiveControl is TCustomEdit) then
  begin
    (FormMain.ActiveControl as TCustomEdit).SelText:=Chr(Key);
  end;

  if (FormMain.ActiveControl is TCustomComboBox) then
  begin
   (FormMain.ActiveControl as TCustomComboBox).SelText:=Chr(Key);
  end;
end;
Mit den CustomEdits funktioniert es, mit den CustomComboBoxes nicht. Weil die stets den SelText vergessen, wird der Text immer am Anfang eingefügt, was nicht wirklich Sinn der Sache ist.

Kennt jemand eine Möglichkeit, wie ich mein Vorhaben dennoch in die Tat umsetzen kann?

Neg 3. Feb 2004 00:36

Re: SelText bei ComboBoxen buggy?
 
*push* :mrgreen:

Nightshade 3. Feb 2004 05:47

Re: SelText bei ComboBoxen buggy?
 
Delphi-Quellcode:
(FormMain.ActiveControl as TCustomEdit).Text := (FormMain.ActiveControl as TCustomEdit).Text + Chr(Key);

Neg 3. Feb 2004 11:56

Re: SelText bei ComboBoxen buggy?
 
So hänge ich den Text ja nur am Ende an. Ich will aber den Text genau da einfügen, wo der Cursor aktuell steht. Außerdem funktioniert es ja, wie gesagt, bereits mit den CustomEdits. Nur mit den CustomComboBoxes habe ich Probleme...

Christian Seehase 3. Feb 2004 15:24

Re: SelText bei ComboBoxen buggy?
 
Moin Neg,

vielleicht hilft Dir der Umweg über die API weiter (ausprobiert hab' ich das noch nicht).

Schau Dir doch mal im PSDK oder auf MSDN die Message CB_SETEDITSEL an.


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