AGB  ·  Datenschutz  ·  Impressum  







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

Combobox mit Icons Darstellung nicht korrekt

Ein Thema von Chemiker · begonnen am 26. Mai 2007 · letzter Beitrag vom 27. Mai 2007
Antwort Antwort
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#1

Combobox mit Icons Darstellung nicht korrekt

  Alt 26. Mai 2007, 17:43
Hallo,

ich habe ein Problem mit einer Combobox in der mit Hilfe einer ImageList für jeden Eintrag ein anderes Icon angezeigt werden soll. Das funktioniert auch soweit, aber mit einem Schönheitsfehler das immer das zuletzt benutzte Icon in allen Einträgen angezeigt wird. Erst wenn man mit dem Mauszeiger über die Einträge der aufgeklappten Combobox geht, wird das richtige Icon angezeigt.

Delphi-Quellcode:
procedure TFormMSEinrichten.ComboBox1DrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
  Combobox1.Canvas.Brush.Color:= clWhite;
  Combobox1.Canvas.FillRect(rect);
  if ComboBox1.ItemIndex = 0 then
    begin
      ImageList1.Draw(ComboBox1.Canvas, rect.Left+2, rect.Top+3,1);
    end;
    if ComboBox1.ItemIndex = 1 then
    begin
      ImageList1.Draw(ComboBox1.Canvas, rect.Left+2, rect.Top+3,0);
    end;
  ComboBox1.Canvas.Font.Color:= clblack;
  ComboBox1.Canvas.TextOut(32,rect.Top+4,Combobox1.Items[index]);
end;
Vielleicht kann einer von euch mir einen Tipp geben.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Combobox mit Icons Darstellung nicht korrekt

  Alt 26. Mai 2007, 17:46
Warum programmierst du ein vorhandenes Feature selber nach?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Combobox mit Icons Darstellung nicht korrekt

  Alt 26. Mai 2007, 18:29
Hi,

das kommt weil der ItemIndex beim Aufklappen der Combobox -1 und nicht 0 oder 1 ist.
Eventuell könntest du es so abändern:
Delphi-Quellcode:
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  Combobox1.Canvas.Brush.Color:= clWhite;
  Combobox1.Canvas.FillRect(rect);
    if Index(*ComboBox1.ItemIndex *)= 0 then
    begin
      ImageList1.Draw(ComboBox1.Canvas, rect.Left+2, rect.Top+3,1);
    end;
    if Index(*ComboBox1.ItemIndex*) = 1 then
    begin
      ImageList1.Draw(ComboBox1.Canvas, rect.Left+2, rect.Top+3,0);
    end;
  ComboBox1.Canvas.Font.Color:= clblack;
  ComboBox1.Canvas.TextOut(32,rect.Top+4,Combobox1.Items[index]);
end;
Dann allerdings ohne ItemIndex.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Combobox mit Icons Darstellung nicht korrekt

  Alt 27. Mai 2007, 09:13
Hallo mkinzler,

Zitat von mkinzler:
Warum programmierst du ein vorhandenes Feature selber nach?
Welche Feature von der Combobox meinst Du??



Hallo bitsetter,

das ist die Lösung gewesen danke!
Durch diese Änderung verhält sich nun die ComboBox wie sie soll.


Delphi-Quellcode:
procedure TFormMSEinrichten.ComboBox1DrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
  Combobox1.Canvas.Brush.Color:= clWhite;
  Combobox1.Canvas.FillRect(rect);
  if Index = 0 then
    ImageList1.Draw(ComboBox1.Canvas, rect.Left+2, rect.Top+3,1);
  if Index = 1 then
    ImageList1.Draw(ComboBox1.Canvas, rect.Left+2, rect.Top+3,0);
  ComboBox1.Canvas.Font.Color:= clblack;
  ComboBox1.Canvas.TextOut(32,rect.Top+4,Combobox1.Items[index]);
end;

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Combobox mit Icons Darstellung nicht korrekt

  Alt 27. Mai 2007, 09:40
Hallo Chemiker,

hast du in deiner Routine den Übergabeparameter State absichtlich ignoriert? Bei deiner Vorgehensweise ist der selektierte Eintrag nur noch durch ein Fokusrechteck gekennzeichnet. Windows-Standard ist aber ein Hinterlegen des Eintrags in einer anderen Farbe.

Zitat von mkinzler:
Warum programmierst du ein vorhandenes Feature selber nach?
Vielleicht wollte Markus auf die Komponente Delphi-Referenz durchsuchenTComboBoxEx hinweisen.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Combobox mit Icons Darstellung nicht korrekt

  Alt 27. Mai 2007, 17:39
Hallo Hawkeye,

ich habe bis heute schlicht weg übersehen, dass diese Komponente mir zur Verfügung steht.
War schon ziemlich blöd von mir, das Rad noch mal zu erfinden.
Danke für den Tipp.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  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 19:21 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