Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2008, 20:17   #1
werser
Форумчанин
 
Регистрация: 11.06.2007
Сообщений: 233
По умолчанию ListBox

Как обратитса к 5 строке в ListBox и поменять ей цвет шрифта не могу найти свойство
werser вне форума Ответить с цитированием
Старый 29.05.2008, 22:32   #2
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
Сообщение

Такого свойства НЕТ. Только вручную отрисовывать ListBox.
Например:
Код:
unit Box;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var MyFont :TFont;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  IF index<0 then exit;
 With ListBox1 do
 begin
   if (odSelected in state) then
   Canvas.Brush.Color := clMoneyGreen;
   Canvas.FillRect(Rect);
  if index=4 then
  begin
    // 1-ый способ, просто присвоение. Можно ещё так: Canvas.Font.Assign(myFont);
   Canvas.Font := myFont;
     // 2-ой способ, через указатель
  { Items.Objects[index] := Pointer(MyFont); // указатель на шрифт
    Canvas.Font := TFont(Items.Objects[index]); // так читем шрифт
  }
   Canvas.TextOut(Rect.Left, Rect.Top, Items[Index]); // вывод текста
    // продолжение, 2-ой способ
  { Items.Objects[index] := Nil; // Очищаем, Сброс }
  end
   Else
  Canvas.TextOut(Rect.Left, Rect.Top, Items[Index]);
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 MyFont := TFont.Create;
  MyFont.Color := clRed;
  MyFont.Size := 10;
  MyFont.Style := [fsBold];
 ListBox1.Style := lbOwnerDrawFixed;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 If Edit1.Text <>'' then
 listbox1.Items.Add(Edit1.Text);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 listbox1.Clear;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 MyFont.Free;
end;

end.
Alter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ListBox Witaliy Общие вопросы Delphi 10 27.04.2008 17:15
[ C# ]::[ ListBox ] Fire.id Общие вопросы .NET 1 13.01.2008 21:07
из ListBox в БД Spectre БД в Delphi 5 31.12.2007 13:58
Listbox Dexic Помощь студентам 1 24.06.2007 15:05
ListBox lin Помощь студентам 1 04.06.2007 13:46