I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
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.
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;
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Å ?
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;
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.