AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TCombobox Text deselektieren nach SetFocus

Ein Thema von TurboMagic · begonnen am 5. Jul 2023 · letzter Beitrag vom 13. Jul 2023
Antwort Antwort
Seite 1 von 2  1 2      
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#1

TCombobox Text deselektieren nach SetFocus

  Alt 5. Jul 2023, 20:08
Gegeben ist eine VCL Form mit u.a. einer TComboBox, Stil csDropDown, drauf.
Klicke ich einen bestimmten Button wird Combo.SetFocus aufgerufen.
Nur ist der bereits eingegebene Text dann immer schon selektiert, was ich nicht will.

Ich habe schon versucht im OnEnter ClearSelection aufzurufen, SelLength auf 0 zu setzen
oder SelStart auf -1.

Hat alles nicht gefruchtet.
Gibt's dazu eine Lösung?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: TCombobox Text deselektieren nach SetFocus

  Alt 5. Jul 2023, 21:30
.. so tut es bei mir:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ComboBox1.SetFocus;
  ComboBox1.SelStart := 0;
  ComboBox1.SelLength := 0;
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#3

AW: TCombobox Text deselektieren nach SetFocus

  Alt 5. Jul 2023, 22:00
@Klaus: Er macht im Button nur SetFocus,
aber den Rest im OnEnter.


Tja, eventuell wird die Selection erst nach "deinem" Event gesetzt?

Statt sich an die OnXXX zu hängen, könnte man auch die DoXXX überschreiben.
So Manches wird nach dem VCL-Event gemacht, aber mit etwas Glück noch innerhalb der jeweiligen Windows-Message.

Oder einfach noch etwas warten.
Delphi-Quellcode:
TThread.ForceQueue(nil, procedure
  begin
    DeineComboBox.ClearSelection;
  end;


Alternativ mal die TComboBoxEx versuchen.
Bei einigen Dingen verhält Diese sich anders.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 5. Jul 2023 um 22:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TCombobox Text deselektieren nach SetFocus

  Alt 5. Jul 2023, 22:16
Oder einfach noch etwas warten.
Delphi-Quellcode:
TThread.ForceQueue(nil, procedure
  begin
    DeineComboBox.ClearSelection;
  end;
Das würde den Inhalt der ComboBox vernichten.


Delphi-Quellcode:
// das um sicherzustellen das nichts blau ist nach einer auswahl durchs pop-up oder per scroll
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  PostMessage(ComboBox1.Handle, CB_SETEDITSEL, 0, MAKELPARAM($FFFF, $0000));
end;

// das damit nichts ausgewählt wird wenn die combobox den focus erhält
procedure TForm1.ComboBox1Enter(Sender: TObject);
begin
  PostMessage(ComboBox1.Handle, CB_SETEDITSEL, 0, MAKELPARAM($FFFF, $0000));
end;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#5

AW: TCombobox Text deselektieren nach SetFocus

  Alt 6. Jul 2023, 18:48
.. so tut es bei mir:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ComboBox1.SetFocus;
  ComboBox1.SelStart := 0;
  ComboBox1.SelLength := 0;
end;
Grüße
Klaus
Hallo Klaus,

danke, das funktioniert grundsätzlich.
Ich lasse sogar das SelStart weg und es geht auch. Man darf's halt
wohl nicht im OnEnter aufrufen.

Nur: bei mir ist der Cursor danach immer am Textanfang statt am Text Ende.
Kann man das noch irgendwie ändern? Hab' auf die Schnelle nix gefunden...

Grüße

TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TCombobox Text deselektieren nach SetFocus

  Alt 6. Jul 2023, 19:00
Hab' auf die Schnelle nix gefunden...
Dann ist wohl meine Antwort unsichtbar für Dich.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.452 Beiträge
 
Delphi 12 Athens
 
#7

AW: TCombobox Text deselektieren nach SetFocus

  Alt 6. Jul 2023, 19:00
Nur: bei mir ist der Cursor danach immer am Textanfang statt am Text Ende.
Kann man das noch irgendwie ändern? Hab' auf die Schnelle nix gefunden...
Bei SelLength = 0 gibt SelStart die Position vor.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#8

AW: TCombobox Text deselektieren nach SetFocus

  Alt 6. Jul 2023, 19:14
Geht das?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ComboBox1.SetFocus;
  ComboBox1.SelStart := Length(ComboBox1.Text) // evntuell + 1?;
  ComboBox1.SelLength := 0;
end;
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
472 Beiträge
 
#9

AW: TCombobox Text deselektieren nach SetFocus

  Alt 6. Jul 2023, 20:26
Dann ist wohl meine Antwort unsichtbar für Dich.
Warum er deine Antwort nicht berücksichtigt, weiß ich nicht. Noch ein Versuch:
Delphi-Quellcode:
ComboBox.SetFocus;
ComboBox.Perform(CB_SETEDITSEL, 0, 0 {oder -1, wenn der Cursor am Ende stehen soll});
Bis bald...
Thomas
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#10

AW: TCombobox Text deselektieren nach SetFocus

  Alt 12. Jul 2023, 14:39
Geht das?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ComboBox1.SetFocus;
  ComboBox1.SelStart := Length(ComboBox1.Text) // evntuell + 1?;
  ComboBox1.SelLength := 0;
end;
Bin leider erst jetzt wieder zu dem Thema gekommen aber: ja es funktioniert!
Danke!

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:05 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