AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Wie bestimmte ComboBox-Einträge disablen?

Ein Thema von PeterPanino · begonnen am 13. Aug 2006 · letzter Beitrag vom 14. Aug 2006
Antwort Antwort
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#1

Wie bestimmte ComboBox-Einträge disablen?

  Alt 13. Aug 2006, 18:40
Hallo,

ich möchte bestimmte Einträge einer ComboBox disablen. Ich habe das auf 2 Arten versucht, die aber beide nicht zum Ziel geführt haben:

1. Setzen von TOwnerDrawState im OnDrawItem-Event:
Include(State, odDisabled); Ergebnis: Keine sichtbare Veränderung, wohl weil State kein var(rückgabe)-Parameter ist

2. Fontfarbe im OnDrawItem-Event grau zeichnen, damit es wie disabled aussieht:
Delphi-Quellcode:
with TComboBox(Control) do
  Canvas.Font.Color := clGray;
  //usw.
Ergebnis: Graue Schrift funktioniert, aber wie kann ich den Eintrag effektiv disablen, sodass ein Klick auf diesen Eintrag nicht weitergegeben wird?
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#2

Re: Wie bestimmte ComboBox-Einträge disablen?

  Alt 13. Aug 2006, 19:07
hi,
woher weist die combobox, welche einträge sie disablen soll?
ich würde es evtl so machen...

setzen, welche einträge deaktiviert sind (gibt evtl bessere varianten)...
Delphi-Quellcode:
  combobox1.Items.Objects[0]:=TObject(0);//disabled
  combobox1.Items.Objects[1]:=TObject(1);//enabled
  combobox1.Items.Objects[2]:=TObject(0);//disabled
  ...
im onchange das ausgewählte prüfen und bei deaktiviert zum zuletzt ausgewählten zurückspringen

Delphi-Quellcode:
if combobox1.Items.Objects[combobox1.itemindex]=TObject(0) then
begin
  showmessage('disabled');
  combobox1.itemindex:=oldindex;
end else oldindex:=combobox1.itemindex;
HTH Frank
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Wie bestimmte ComboBox-Einträge disablen?

  Alt 13. Aug 2006, 20:07
Zitat von _frank_:
hi,
woher weist die combobox, welche einträge sie disablen soll?
Das mache ich im OnDrawItem-Event, wenn bestimmte Bedingungen zutreffen.

Zitat von _frank_:
ich würde es evtl so machen...

setzen, welche einträge deaktiviert sind (gibt evtl bessere varianten)...
Delphi-Quellcode:
  combobox1.Items.Objects[0]:=TObject(0);//disabled
  combobox1.Items.Objects[1]:=TObject(1);//enabled
  combobox1.Items.Objects[2]:=TObject(0);//disabled
  ...
Danke, ist eine gute Idee, werde es im OnDrawItem-Event machen ...

Zitat von _frank_:
im onchange das ausgewählte prüfen und bei deaktiviert zum zuletzt ausgewählten zurückspringen

Delphi-Quellcode:
if combobox1.Items.Objects[combobox1.itemindex]=TObject(0) then
begin
  showmessage('disabled');
  combobox1.itemindex:=oldindex;
end else oldindex:=combobox1.itemindex;
Hm, ich möchte das so machen, dass bei einem Klick auf ein disabled-Item gar nichts passiert (so wie bei einem Disabled-Item in einem Menü). Ich habe folgendes versucht, aber ich bin da noch nicht ganz durch:

Delphi-Quellcode:
//Im OnSelect-Event der ComboBox:
ComboBox.DroppedDown := True;
Ich weiß noch nicht, wie ich im OnSelect-Event abfragen kann, welches Item angeklickt wurde, da ItemIndex zu diesem Zeitpunkt noch nicht auf das angeklickte Item verweist und auch ComboBox.Text noch nicht upgedatet ist.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Wie bestimmte ComboBox-Einträge disablen?

  Alt 13. Aug 2006, 21:10
Furchtbare Entdeckung: Weder in ComboBox.OnChange noch in ComboBox.OnSelect kann man ComboBox.Text einen Wert zuweisen!! (D.h. man kann schon, aber er wird nicht angezeigt, sondern immer nur das angeklickte Item). Somit scheint es nicht möglich zu sein, ComboBox.Text zurückzusetzen, um ein Item als disabled zu simulieren!

Wer weiß einen Ausweg?
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Wie bestimmte ComboBox-Einträge disablen?

  Alt 14. Aug 2006, 10:43
Die perfekte Simulation von disabled-Items in einer ComboBox scheint nicht möglich zu sein. Bliebe nur noch der Ausweg, statt der ComboBox-DropDown-Liste ein Popup-Menü anzuzeigen. Wer weiß zufällig, wie man das Herunterklappen der ComboBox-DropDown-Liste beim Anklicken der ComboBox verhindern kann?
  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 09:54 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