Avatar billede krab Praktikant
05. november 2002 - 14:37 Der er 7 kommentarer og
1 løsning

Listbox1 [Farver]

Hej!!

Kan man godt gøre så første objekt i en listbox1 er RØD
en nummer 2 er BLÅ  ???????

HVORDAN?

//Krab
Avatar billede martinlind Nybegynder
05. november 2002 - 14:49 #1
OwnerDraw

/Martin
Avatar billede krab Praktikant
05. november 2002 - 14:55 #2
ØØØHHH Hva>?
Avatar billede martinlind Nybegynder
05. november 2002 - 15:02 #3
Du laver din listbox OwnerDraw, kig i hjælpen der er et simpelt eks. du kan kan bruge, hvor de tegner en bitmap.
Avatar billede krab Praktikant
05. november 2002 - 15:06 #4
Ka det ik gøres uden bitmap da?
Avatar billede martinlind Nybegynder
05. november 2002 - 15:12 #5
Jo sagtens, det var bare for at fortælle dig om eks.

Here is a typical handler for an OnDrawItem event. In the example, a list box with the lbOwnerDrawFixed style draws a bitmap to the left of each string.

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect:TRect;State: TOwnerDrawState);

var
    Bitmap: TBitmap;      { temporary variable for the item’s bitmap }
    Offset: Integer;      { text offset width }
begin
    with (Control as TListBox).Canvas do  { draw on control canvas, not on the form }
    begin
    FillRect(Rect);      { clear the rectangle }
    Offset := 2;          { provide default offset }
    Bitmap := TBitmap((Control as TListBox).Items.Objects[Index]);  { get the bitmap }
    if Bitmap <> nil then

begin
        BrushCopy(Bounds(Rect.Left + Offset, Rect.Top, Bitmap.Width, Bitmap.Height),
            Bitmap, Bounds(0, 0, Bitmap.Width, Bitmap.Height), clRed);  {render bitmap}
        Offset := Bitmap.width + 6;    { add four pixels between bitmap and text}
    end;
    TextOut(Rect.Left + Offset, Rect.Top, (Control as TListBox).Items[Index])  { display the text }
    end;
end;
Avatar billede krab Praktikant
05. november 2002 - 16:58 #6
OKI nu kan det godt være at det er mig der er dum, men tror altså ik du har forstået mig rigtigt.....
Jeg mener om man ik kan laver skrift farven om.... Altså med listbox1.Font.Color := clred; så bliver alt tekst rød, Hvordan får så det kun er første item der er RØD tekst, og FX. 2 item er BLÅ ?

//Krab
Avatar billede amhmaster Nybegynder
06. november 2002 - 13:29 #7
Sæt din ListBox's style til "OwnerDrawFixed" og tilknyt nedenstående procedure til OnDrawItem-event'et på ListBox'en. Bemærk, at det er case-sætningen, der styrer farven. Resten er sakset næsten direkte fra TListBox.DrawItem.

//Allan


procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  FCanvas: TCanvas;
  Flags: LongInt;
begin
  FCanvas:=TListBox(Control).Canvas;

  FCanvas.FillRect(Rect);

  case Index of
    0: FCanvas.Font.Color:=clRed;
    1: FCanvas.Font.Color:=clBlue;
  end;

  if Index < ListBox1.Items.Count then
  begin
    Flags := DrawTextBiDiModeFlags(DT_SINGLELINE or DT_VCENTER or DT_NOPREFIX);
    if not UseRightToLeftAlignment then
      Inc(Rect.Left, 2)
    else
      Dec(Rect.Right, 2);
    DrawText(FCanvas.Handle, PChar(ListBox1.Items[Index]), Length(ListBox1.Items[Index]), Rect,
      Flags);
  end;
end;
Avatar billede krab Praktikant
09. november 2002 - 21:30 #8
Takker for help
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Riskpoint A/S (Riskpoint Solutions Limited)

Senior Developer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Vil du være med til at opbygge og udvikle Forsvarets dronekapacitet?

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Analytiker til Security Operationscenter i Cyberdivisionen Hvidovre