Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Listbox ... Farbe von Zeile ermitteln (https://www.delphipraxis.net/84979-listbox-farbe-von-zeile-ermitteln.html)

DerMike 24. Jan 2007 09:11


Listbox ... Farbe von Zeile ermitteln
 
Hallo,

ich habe ein kleineres Problem.

Ich habe nach der Anleitung aus diesem Forum einzelne Zeilen in meiner Listbox Komponente in Blau und manche in Rot dargestellt. Jetzt habe ich neben der Listbox Komponente eine zweite Listbox Komponente in die ich über 2 Buttons die Einträge

1) von Listbox1 in Listbox2
2) von Listbox2 in Listbox1 verschieben kann.

Wenn ich einen Eintrag von Listbox1 (Eintrag ist Rot) in Listbox2 verschiebe, müsste ich ermitteln in welcher Farbe der Eintrag in Listbox1 war. Geht das überhaupt, oder muss ich über ein Hilfsfeld arbeiten???

lg
Mike

Pfoto 24. Jan 2007 09:37

Re: Listbox ... Farbe von Zeile ermitteln
 
Hallo!

wenn du nur das OnDrawItem Ereignes überschrieben hast
und lediglich anhand von ungeraden / geraden Zeilen unterschieden
hat, ob eine Zeile rot oder blau dargestellt werden soll,
dann "weiß" der Listbox-Eintrag selbst ja nichts davon.

Du könntest aber mit AddObject jedem Eintrag ein kleines
Hilfs-Objekt mitgeben, indem definiert ist, welche Farbe der
jeweilige Eintrag hat.
Beim Verschieben kann dann darauf zurückgegriffen werden
und die Info wandert ja sogar mit in die andere Listbox.


Gruß
Pfoto

shmia 24. Jan 2007 09:47

Re: Listbox ... Farbe von Zeile ermitteln
 
Es gibt 2 Techniken; ich zeig dir mal die einfachere:
1.) jeder Texteintrag enthält zusätzlich noch die Farbe (getrennt durch das | Zeichen)
Beispiel:
Bayern|$00FFFFFF
Hessen|$00F000FF
Hamburg|$00808000
2.) es gibt 2 Funktionen, mit denen man den Nutztext oder die Farbe auslesen kann
3.) im Event OnDrawItem wenn die Funktionen von 2.) benutzt, um Nutztext und Farbcode zu trennen.
Es wird dann der Nutztext in der Farbe angezeigt

Vorteil: Man kann die Listboxen mitsammt den Farben speichern und laden.

DerMike 24. Jan 2007 10:11

Re: Listbox ... Farbe von Zeile ermitteln
 
Danke erstmal,

nur leider ist mir das ganze zu hoch.

Könntest du mir einen kleinen Tip geben, wie die Funktionen heißen mit denen ich die Werte getrennt (Value,Color) auslesen kann.

lg
Mike

shmia 24. Jan 2007 10:25

Re: Listbox ... Farbe von Zeile ermitteln
 
Zitat:

Zitat von DerMike
Könntest du mir einen kleinen Tip geben, wie die Funktionen heißen mit denen ich die Werte getrennt (Value,Color) auslesen kann.

Die Funktion muss man natürlich selber schreiben.
Delphi-Quellcode:
function ExtractTextAndColor(const s:string; var text:string):TColor;
var
   p : Integer;
begin
   p := Pos('|',s);
   if p = 0 then // kein Delimter gefunden
   begin
      text := s;
      Result := clGrayText; // default Farbe
   end
   else
   begin
      text := copy(s,1, p-1); // Nutztext
      Result := TColor(StrToInt(copy(s, p+1, 999))); // Farbe
   end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 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