AGB  ·  Datenschutz  ·  Impressum  







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

Listbox mit Farbflächendarstellung

Ein Thema von to-wer · begonnen am 28. Dez 2017 · letzter Beitrag vom 29. Dez 2017
Antwort Antwort
to-wer

Registriert seit: 25. Mär 2007
29 Beiträge
 
#1

AW: Listbox mit Farbflächendarstellung

  Alt 28. Dez 2017, 16:11
Wo find ich denn diese Komponente in Delphi, wenn ich alles installiert habe?
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.559 Beiträge
 
Delphi 7 Professional
 
#2

AW: Listbox mit Farbflächendarstellung

  Alt 28. Dez 2017, 16:23
In meinem Delphi 7 in der Palette auf dem Reiter Jv Lists, Combos, Trees, das 9. Symbol von rechts.

Oder Menü:

-> Ansicht
--> Komponentenliste
---> TJvColorComboBox
eingeben.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Listbox mit Farbflächendarstellung

  Alt 28. Dez 2017, 18:21
Wo find ich denn diese Komponente in Delphi, wenn ich alles installiert habe?
Die Komponente die Delphi.Narium meint ist von den Jedis.

Ich habe dein Problem aber noch nicht so ganz verstanden. Was genau funktioniert jetzt nicht? Dein SourceCode auf Seite 1 sieht soweit richtig aus bis evtl. auf die Textfarbe. Das With stört mich zwar etwas, aber das musst du wissen ob du das verwenden willst.

Beherzige den Tipp von MyRealName. Dann kannst du den Text wenigstens richtig lesen.
Du könntest die Komplementärfarbe nutzen, um die Schrift innerhalb eines farbgefüllten Bereiches immer lesbar zu haben.
Die Farbe kannst du mit clBlack xor $DeineFarbe bilden (wenn ich das noch richtig im Kopf habe).
  Mit Zitat antworten Zitat
to-wer

Registriert seit: 25. Mär 2007
29 Beiträge
 
#4

AW: Listbox mit Farbflächendarstellung

  Alt 28. Dez 2017, 21:04
@myrealname: ja genau das hatte ich vor bzw. als Alternative von der Farbsumme (R+G+B) die Schrift in schwarz oder weiß anzulegen.

@Aviator: mein Problem ist, dass die Hintergründe erst in den entsprechenden Farben gezeichnet werden, wenn ich mit der Maus darüber gehe.
In dem Moment, wo ich die Combobox öffne, werden alle Hintergründe mit der Hintergrundfarbe des ersten Feldes gezeichnet, z.B. hellblau. Das ist auch beim Verschieben der Scrollbar so, alles einfarbig. Erst mit dem Mauszeiger drüberfahren ist irgendwie blöd.

Um die Jedi Tools zu installieren, muss ich erst mein Delphi an WIN10 anpassen. Deshalb hatte ich die "schnelle" Comboboxvariante vorerst bevorzugt.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Listbox mit Farbflächendarstellung

  Alt 28. Dez 2017, 21:05
Könntest du mal ein kleines Beispielprojekt anhängen wo man den Fehler nachvollziehen kann?

EDIT: Ich verstehe was du meinst, aber ich kann an dem SourceCode so nichts falsches erkennen. Deshalb wäre ein Beispielprojekt hilfreich.
  Mit Zitat antworten Zitat
to-wer

Registriert seit: 25. Mär 2007
29 Beiträge
 
#6

AW: Listbox mit Farbflächendarstellung

  Alt 29. Dez 2017, 17:36
Hallo Aviator,
habe das Projekt auf die wesentlichen Funktionen zusammengeschrumpft.
Du kannst die Projektdatei öffnen und starten.
Im Formular Grafik findet man rechts unten die Combobox Polyneon.

In der Unit ist die onDraw Prozedur die vorletzte.
Gestern hatte ich bei einem ähnlichen Listboxproblem noch etwas mit DropKind oder so ähnlich gelesen. Das gibt es bei der Combobox wohl nicht?!
VG
Angehängte Dateien
Dateityp: zip Comboboxproblem.zip (308,4 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
Delphi.Narium

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

AW: Listbox mit Farbflächendarstellung

  Alt 29. Dez 2017, 18:02
Wenn man diese Zeile ändert

Brush.Color := StringToColor(Polyneon[ComboBox1.ItemIndex]);

in

Brush.Color := StringToColor(Polyneon[Index]);

werden die Farben beim Aufklappen (wie gestern schon vermutet) korrekt angezeigt.

Es soll ja schließlich die Farbe zum entsprechenden Eintrag aus Polyneon und nicht immer die Farbe des zufällig gerade gewählten Eintrages genommen werden.
  Mit Zitat antworten Zitat
to-wer

Registriert seit: 25. Mär 2007
29 Beiträge
 
#8

AW: Listbox mit Farbflächendarstellung

  Alt 29. Dez 2017, 19:58
Du bist genial... es geht.
Jetzt verstehe ich langsam diese Prozedur, wo "Index" ja auch in der Variablenübergabe auftaucht...

Hier noch einmal die ganze Prozedur, falls sie jemand anderem noch helfen kann.
Delphi-Quellcode:
procedure TForm2.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with (Control as TComboBox).Canvas do begin // in ComboBox zeichnen
    Brush.Color := StringToColor(Stringarray[Index]); //im Stringarray befinden sich die HEX-Farbwerte
    Brush.Style := bsSolid;
    FillRect(Rect);
    Brush.Style := bsClear;
    TextOut(Rect.Left, Rect.Top, (Control as TComboBox).Items[Index]);
  end;
end;
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Listbox mit Farbflächendarstellung

  Alt 29. Dez 2017, 19:58
Wenn man diese Zeile ändert

Brush.Color := StringToColor(Polyneon[ComboBox1.ItemIndex]);

in

Brush.Color := StringToColor(Polyneon[Index]);

werden die Farben beim Aufklappen (wie gestern schon vermutet) korrekt angezeigt.

Es soll ja schließlich die Farbe zum entsprechenden Eintrag aus Polyneon und nicht immer die Farbe des zufällig gerade gewählten Eintrages genommen werden.


Sowas übersieht man dann auch leicht in dem geposteten SourceCode auf Seite 1
  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:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz