Co zrobic zeby w komponencie TColorBox kolory były wypisane po Polsku(czy w ogóle da sie tak zrobić)?
0
0
Da się, trzeba tylko przerobić cały komponent TColorBox - spytaj Szymka, on chyba zrobił takie coś.
0
A czy bez grzebania w komponencie da sie usunac napisy i pozostawic tylko kwadraciki z kolorami?
0
Przerób sobie to na combobox:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
procedure ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
type
{ Rekord zawiera pozycje kolru i nazwy tego koloru }
TColorRec = packed record
Color : TColor;
Des : String[15];
end;
{ Tablica kolorow }
const ColorTab : array[0..6] of TColorRec =
(
(Color: clBlack; Des: 'Czarny'),
(Color: clBlue; Des: 'Niebieski'),
(Color: clGreen; Des: 'Zielony'),
(Color: clRed; Des: 'Czerwony'),
(Color: clYellow; Des: 'Źółty'),
(Color: clGray; Des: 'Szary'),
(Color: clWhite; Des: 'Biały')
);
begin
with Listbox1.Canvas do
begin
FillRect(Rect);
Brush.Style := bsSolid; // styl - jednolity
Brush.Color := ColorTab[Index].Color; // kolor z tablicy
Rectangle(Rect.Left + 2, Rect.Top + 2, Rect.Left + 32, Rect.Bottom - 2);
Brush.Style := bsClear; // tło na przezroczyste
TextOut(Rect.Left + 40, Rect.Top + 2, ColorTab[Index].Des); // pisz tekst
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
I : Integer;
type
{ Rekord zawiera pozycje kolru i nazwy tego koloru }
TColorRec = packed record
Color : TColor;
Des : String[15];
end;
{ Tablica kolorow }
const ColorTab : array[0..6] of TColorRec =
(
(Color: clBlack; Des: 'Czarny'),
(Color: clBlue; Des: 'Niebieski'),
(Color: clGreen; Des: 'Zielony'),
(Color: clRed; Des: 'Czerwony'),
(Color: clYellow; Des: 'Źółty'),
(Color: clGray; Des: 'Szary'),
(Color: clWhite; Des: 'Biały')
);
begin
{ wypelnij pola danymi }
for I := Low(ColorTab) to High(ColorTab) do
Listbox1.Items.Add(ColorTab[i].Des);
end;
end.
ten kodzik znalazłem na 4programmers.net gdzieś żeby nie było.
0
Ja po prostu zrobiłem własny komponent do tego.