AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

ComboBox Inhalt nicht markieren

Ein Thema von BenniP · begonnen am 14. Dez 2007 · letzter Beitrag vom 3. Nov 2016
Antwort Antwort
BenniP

Registriert seit: 27. Nov 2004
50 Beiträge
 
Delphi 2007 Professional
 
#1

ComboBox Inhalt nicht markieren

  Alt 14. Dez 2007, 22:50
Hallo,

ich hab ein kleines Problem.
Auf meinem Form ist eine ComboBox mit dem Style csDropDown.
Ich versuche die Cursorposition mit .SelStart auszulesen.

Was bei Edit auch hervorragend klappt, nur nicht bei der ComboBox.
Der gesamte Inhalt wird markiert sobald man sie anklickt und .SelStart (logischer weise) auf 0 gesetzt.

Meine Frage ist nun, kann ich der ComboBox diese Verhalten abgewöhnen?

Besten Dank!
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 22. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: ComboBox Inhalt nicht markieren

  Alt 15. Dez 2007, 00:00
Ist es korrekt, dass du verhindern willst, dass wenn du ein vordefiniertes Item aus der Combobox auswählst, der komplette Text selektriert wird? Du willst also, dass die (Text-)Cursorposition beim ändern der Selektion beibehalten bleibt?
Daniel Marschall
  Mit Zitat antworten Zitat
BenniP

Registriert seit: 27. Nov 2004
50 Beiträge
 
Delphi 2007 Professional
 
#3

Re: ComboBox Inhalt nicht markieren

  Alt 15. Dez 2007, 09:03
Um das Verhalten der auszuwählenden Einträge hab ich mir noch keine Gedanken gemacht.

Es geht mir nur um das Problem das der komplette Text markiert wird beim Anklicken der ComboBox.
Wenn sich das Verhalten der Auswahl von Einträge auch ändern ist mir das (relativ) egal.
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: ComboBox Inhalt nicht markieren

  Alt 15. Dez 2007, 09:19
Zitat von BenniP:
Um das Verhalten der auszuwählenden Einträge hab ich mir noch keine Gedanken gemacht.

Es geht mir nur um das Problem das der komplette Text markiert wird beim Anklicken der ComboBox.
Wenn sich das Verhalten der Auswahl von Einträge auch ändern ist mir das (relativ) egal.
Ganz einfach OwnerDraw benutzen und die Einträge selbst zeichnen. Ist wirklich ganz einfach! Such mal im Forum danach (Evtl. auch im VCL-Quelltext wie Borland das macht). In der Routine wird normalerweise einfach der Hintergrund des markierten Eintrages gesetzt. Wenn Du die Zeile weglässt hast Du das was Du möchtest. Dein OnDrawItem wird nur ca. 10 Zeilen lang sein - ist also wirklich nicht schwer!

SCRaT

//EDIT: Habe gerade bemerkt, daß Du was für eine Combobox suchst. Wer lesen kann ist klar im Vorteil.
Trotzdem möchte ich Dir folgenden Quelltext nicht vorenthalten, evtl. kannst Du Dir davon was für Dein Problem abschauen. Vergiß nicht, vorher im OI den STyle auf OwnerDraw zu stellen!!! Viel Spaß...

Delphi-Quellcode:
procedure TForm2.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with (Control as TListBox).Canvas do begin // in ListBox zeichnen
    if odSelected in State then
      Brush.Color := $00FF00
    else
      Brush.Color := $FFFFFF;

    Brush.Style := bsSolid;
    FillRect(Rect);
    Brush.Style := bsClear;
    TextOut(Rect.Left, Rect.Top, (Control as TListBox).Items[Index]); // Text schreiben
  end;
end;
Michael Kübler
  Mit Zitat antworten Zitat
BenniP

Registriert seit: 27. Nov 2004
50 Beiträge
 
Delphi 2007 Professional
 
#5

Re: ComboBox Inhalt nicht markieren

  Alt 15. Dez 2007, 10:05
Ah, OwnerDraw hört sich gut an.
Daran hab ich noch nicht gedacht.

Vielen Dank werde es nachher probieren!
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: ComboBox Inhalt nicht markieren

  Alt 15. Dez 2007, 10:15
Hab gerade noch einen guten link als Vorlage entdeckt
Michael Kübler
  Mit Zitat antworten Zitat
BenniP

Registriert seit: 27. Nov 2004
50 Beiträge
 
Delphi 2007 Professional
 
#7

Re: ComboBox Inhalt nicht markieren

  Alt 15. Dez 2007, 17:12
Hmm, wie kann ich der ComboBox wieder ein Edit-ähnliches Feld zuweisen?

Sobald ich den Style auf OwnerDraw umstelle, verhält sich die ComboBox wie bei csDropdownList.
  Mit Zitat antworten Zitat
DelphiFan aus München

Registriert seit: 15. Jan 2010
Ort: München
5 Beiträge
 
#8

AW: ComboBox Inhalt nicht markieren

  Alt 3. Nov 2016, 16:05
Hallo,
ich weiß, der Eintrag ist schon ziemlich alt, ist aber trotzdem in meiner App unschön.

Ich habe aber das Gefühl, dass hier ein Bug in Windows oder Delphi vorliegt, nämlich: Das ComboBox-Textfeld bleibt markiert, wenn es einmal markiert wurde. Nur wenn man (einmal oder zweimal) draufklickt, verschwindet die Markierung des Feldes. Zumindest bei mir ist das so bei Delphi 7 und Windows 10.

Zufällig fand ich eine Lösung ohne Interaktion für meine ComboBox z. B. ComboBox1:

with ComboBox1 do SelText := Text;

das geht natürlich nur, wenn ComboBox1.Style := csDropDown ist

Es würde mich interessieren, ob andere auch so was feststellen.

Geändert von DelphiFan aus München ( 3. Nov 2016 um 16:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: ComboBox Inhalt nicht markieren

  Alt 3. Nov 2016, 16:20
Was hat with ComboBox1 do SelText := Text; mit der Selektierung an sich zu tun?
Hier wird der "aktuell" selektierte Text durch den ganzen Text ersetzt und das Eingefügte ist dann alles selektiert.

PS: Wenn nicht alles oder nichts markiert ist, dann macht der Code ganz nette Dinge.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
DelphiFan aus München

Registriert seit: 15. Jan 2010
Ort: München
5 Beiträge
 
#10

AW: ComboBox Inhalt nicht markieren

  Alt 3. Nov 2016, 16:50
Hallo,

was ich hier geschrieben hatte, kann ich heute leider gar nicht mehr reproduzieren, sorry

Geändert von DelphiFan aus München ( 4. Nov 2016 um 09:08 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:48 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