Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

работа с ListBox


AeRo ©   (2008-05-19 22:45:00) 

Вот я нашел инфу о том, как сделат так, чтобы поля листбокса имели разный цвет, но там цвет меняли только поля с каким-то значением. Можно ли изменить цвет всех видимых полей?


{RASkov}   (2008-05-19 23:40:00) [1]

> [2] Aero   (19.05.08 23:07)
> Я не совсем верно обьяснил

И опять нифика не понятно.... :(
Что значит "на не пустые" и что такое "все ячейки"?
Т.е. ты хочешь видеть полосатый листбокс независимо есть в нем данные или нет, так?
Тогда как простой вариант добавляй "до низа" листбокса пустые итемы(ячейки).... ListBox.Add('');


Aero   (2008-05-19 23:08:00) [2]

Я не совсем верно обьяснил, какой мне нужен результат. Я хочу, чтобы в листе одна ячейка была, например, белая, а вторая - красная. Но когда я использую найденый код, то это действует только на не пустые ячейки, а мне нужно, чтобы на все. Вот найденый мною код:

procedure TForm1.ListBox1DrawItem
 (Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
var
 myColor: TColor;
 myBrush: TBrush;
begin
 myBrush := TBrush.Create;
 with (Control as TListBox).Canvas do
 begin
   if not Odd(Index) then
     myColor := clSilver
   else
     myColor := clYellow;

   myBrush.Style := bsSolid;
   myBrush.Color := myColor;
   Windows.FillRect(handle, Rect, myBrush.Handle);
   Brush.Style := bsClear;
   TextOut(Rect.Left, Rect.Top,
     (Control as TListBox).Items[Index]);
   MyBrush.Free;
 end;
end;


Aero   (2008-05-19 23:07:00) [3]

Я не совсем верно обьяснил, какой мне нужен результат. Я хочу, чтобы в листе одна ячейка была, например, белая, а вторая - красная. Но когда я использую найденый код, то это действует только на не пустые ячейки, а мне нужно, чтобы на все. Вот найденый мною код:

procedure TForm1.ListBox1DrawItem
 (Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
var
 myColor: TColor;
 myBrush: TBrush;
begin
 myBrush := TBrush.Create;
 with (Control as TListBox).Canvas do
 begin
   if not Odd(Index) then
     myColor := clSilver
   else
     myColor := clYellow;

   myBrush.Style := bsSolid;
   myBrush.Color := myColor;
   Windows.FillRect(handle, Rect, myBrush.Handle);
   Brush.Style := bsClear;
   TextOut(Rect.Left, Rect.Top,
     (Control as TListBox).Items[Index]);
   MyBrush.Free;
 end;
end;


{RASkov}   (2008-05-19 23:00:00) [4]

> [0] AeRo   (19.05.08 22:45)
> Можно ли изменить цвет всех видимых полей?

Что это?
Покажи как ты делаешь... пытаешься делать.
И объясни чтоже находится в ЛистБоксе у тебя...


Наверх

Титульная страница Поиск, карта сайта Написать письмо