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 Eigene Farblistbox (https://www.delphipraxis.net/23951-eigene-farblistbox.html)

torud 12. Jun 2004 19:39


Eigene Farblistbox
 
Hallo Leute,

ich möchte eine eigene Farblistbox erstellen und weiss nicht wie!

Wie folgt soll es aussehen. Links, soll das jeweilige Item eine farbige Box haben und rechts soll daszu der Farbname sein. Im Prinzip so, wie die ColorBox ist. Nur eben als Listbox.

Ich würde mir einen ConstBlock mit den Farbcode erstellen und einen mit den dazugehörenden Farbnamen. Nun müsste ich nur noch eine Routine haben, mit der ich die Listbox befüllen und bemale.

Nur WIE?????

Mirilin 12. Jun 2004 19:47

Re: Eigene Farblistbox
 
Liste der Anhänge anzeigen (Anzahl: 1)
:hi:

Schau Dich mal nach OwnerDraw um.

mfg Tobias

torud 12. Jun 2004 20:01

Re: Eigene Farblistbox
 
Ja genau so was meine ich. Nur das ich dort zum Beispiel alle NetscapeFarben (216 Stück) unterbringen will.

Hast Du einen kleinen Fetzen Code???

Mirilin 12. Jun 2004 20:10

Re: Eigene Farblistbox
 
:hi:

Das von vorhin hatte ich mit diesem hingeschluddert.

Delphi-Quellcode:
procedure TMainForm.ListBoxDrawItem(Control: TWinControl; Index: Integer;
  aRect: TRect; State: TOwnerDrawState);
var
  z : Byte;
  s : String;
  r : TRect;
begin
  if not (Control is TListBox) then Exit;
  with TListbox(Control) do
  begin
    z := ItemHeight;
    s := Items[Index];
    with Canvas do
    begin
      Brush.Style := bsSolid;
      Brush.Color := clWhite;
      if odSelected in State then Brush.Color := clGray;
      FillRect(aRect);
      Pen.Color  := clBlack;
      Brush.Color := StringToColor(s);
      r := Rect(aRect.Left+1,aRect.Top+1,aRect.Left+z-1,aRect.Top+z-1);
      Rectangle(r);
      Brush.Style := bsClear;
      TextOut(aRect.Left+z+z,aRect.Top+1,s);
    end;
  end;
end;
Als Items hatte ich einfach Farbkonstanten so wie clGreen ...


mfg Tobias

torud 12. Jun 2004 20:14

Re: Eigene Farblistbox
 
ok, danke erstmal, ich hoffe, dass ich das irgendwie nachvollziehen kann, da ich es ja noch modifizieren muss.

was ich aber noch nicht ganz verstehe ist, die VAR-Deklaration

hm, werds wohl irgendwie hinbekommen

torud 13. Jun 2004 13:35

Re: Eigene Farblistbox
 
Hallo !

Leider funktioniert es bei mir überhaupt nicht, da der Compiler aRect nicht kennt. Ich habe dann aRect in Rect geändert und der Compiler kommt nun schon ein Stück weiter, aber in der Zeile

r := Rect(Rect.Left+1,Rect.Top+1,Rect.Left+z-1,Rect.Top+z-1);

meckert er, dass ihm ein Operator oder ein Semikolon fehlt.

Was mache ich nur Falsch???

Mirilin 13. Jun 2004 13:38

Re: Eigene Farblistbox
 
:hi:

Ich ändere immer in der Definition Rect : TRect durch aRect aus, da ich ja manchmal die Funktion Rect brauche.

Code:
procedure TMainForm.ListBoxDrawItem(Control: TWinControl; Index: Integer;
  [b]aRect[/b]: TRect; State: TOwnerDrawState);

mfg Tobias

torud 13. Jun 2004 13:41

Re: Eigene Farblistbox
 
Hallo Tobias!

jetzt kann ich das Projekt compilieren, aber die listbox ist komplett leer!
Wo muss ich denn nun die farbcodes und die farbnamen dazu deklarieren?

Mirilin 13. Jun 2004 13:44

Re: Eigene Farblistbox
 
:hi: Tom

einfach Items mit den Farben füllen.

mfg Tobias

torud 20. Jul 2004 10:52

Re: Eigene Farblistbox
 
Jo, danke es hat gefunzt.
Nun habe ich endlich eine Farblistbox mit allen möglichen I-Net-Farben!


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