AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Item aus ComboBox ausgrauen (deaktivieren) ...
Thema durchsuchen
Ansicht
Themen-Optionen

Item aus ComboBox ausgrauen (deaktivieren) ...

Ein Thema von mrmoe · begonnen am 19. Aug 2005 · letzter Beitrag vom 19. Aug 2005
Antwort Antwort
mrmoe

Registriert seit: 15. Jul 2005
13 Beiträge
 
#1

Item aus ComboBox ausgrauen (deaktivieren) ...

  Alt 19. Aug 2005, 10:55
hi,

ich möchte nach einem click auf ein element meiner combobox dieses in der liste lassen jedoch ausgegraut also sowas wie:
combobox1.item[x].enabled:=false;

wie kann ich sowas machen ?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Item aus ComboBox ausgrauen (deaktivieren) ...

  Alt 19. Aug 2005, 11:04
Wirst du wohl selber zeichnen müssen. Wie das geht, findest du hier im Forum.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#3

Re: Item aus ComboBox ausgrauen (deaktivieren) ...

  Alt 19. Aug 2005, 13:21
selber ZEICHNEN reicht nicht .. du musst der aufgeklappten Liste eine neue Windows-Prozedur verpassen, in der Du dann prüfen kannst, ob beim Klick der aktuelle Eintrag evtl disabled ist.
Dazu musst Du folgendes machen.
1. ListHandle Property überschreiben und dein eigenes Handle zurückgeben, bzw die eigene Set-Methode rufen
2. Im Konstruktor mit
pListInstance := MakeObjectInstance(ListWndProc); einen Zeiger auf deine eigene ListWindowProc geben lassen (geht aber nicht im .net!)->member der Klasse
3. Im SetListHandle mit
pDefListProc := Pointer(GetWindowLong(hListHandle, GWL_WNDPROC)); die ursprüngliche WindowProc in ner Membervariable speichern(das übergebene HWND auch) und mit
SetWindowLong(hListHandle, GWL_WNDPROC, Longint(pListInstance)); deine eigene WindowProc dem Listhandle zuweisen.
4. jetzt endlich kannst Du in Deiner eigenen ListWindowProc prüfen, ob der Klick zufällig auf ein disabled eintrag fällt. In diesem Fall wirfst Du die Nachricht einfach weg, anderenfalls rufst du die DefListProc mit
Result := CallWindowProc(pDefListProc, ListHandle, Msg, WParam, LParam); auf.
selber Zeichnen musst du aber trotzdem in ner überschriebenen DrawItem
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
mrmoe

Registriert seit: 15. Jul 2005
13 Beiträge
 
#4

Re: Item aus ComboBox ausgrauen (deaktivieren) ...

  Alt 19. Aug 2005, 13:34
hmm weiss nicht genau ob ich da noch ne eigene windows prozedur brauche, da meine combobox ein erweitertes objekt (um 2 eigenschaften ListeAlle und ListeDeaktiv) ist wollt ich eigentlich jedesmal in dem OnDraw Ereignis einfach nur das aktuelle element mit der ListeDeaktiv vergleichen und bei Übereinstimmung halt Combobox1.Canvas.Font.Color := clBlue; z.B.
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#5

Re: Item aus ComboBox ausgrauen (deaktivieren) ...

  Alt 19. Aug 2005, 13:59
Ja aber auswählen kann ers trotzdem, bzw. die Liste klappt trotzdem zu. Wenn Du das verhindern willst, dann bleibt Dir nix anderes übrig. Wenns Dir allerdings egal ist, dass dann trotzdem die Liste zuklappt, dann kannst Du Dir das ganze sparen. In dem Fall musst Du Dir aber den ItemIndex vor dem Aufklappen merken und im Falle eines disabled Eintrags wieder zurücksetzen (Im DoClose, OnClose von aussen ist imho zu spät weil evtl das OnChange dann 2x gerufen wird).
[edit]ich würd dir ja gerne mal den Code von meiner Lösung zuschicken, ist aber lizensiert und darf als quelle nicht raus[/edit]
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
mrmoe

Registriert seit: 15. Jul 2005
13 Beiträge
 
#6

Re: Item aus ComboBox ausgrauen (deaktivieren) ...

  Alt 19. Aug 2005, 14:06
das ist schon ok dass man das dann noch auswählen kann und dass die CB dann zu geht, trotzdem danke für die ausführliche anleitung, viell. brauch ichs ja doch noch.

{man hab ich durscht, gut das heute freitag und in nicht allzuweiter ferne feierabend ist }
The world is coming to an end ...

... Please log off
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:09 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