![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Подскажите, пожалуйста...
Как сделать 1. чтобы строки в ListBox по признаку, допустим bAlarm, закрашивались красным цветом? 2. При добавлении новой строки красная строка бы сдвигалась вместе со всем списком? 3. При сохранении и последующем чтении из файла в ListBox строки сохраняли свой цвет? (если возможно..) |
|
#2
|
||||
|
||||
|
ручная отрисовка
|
|
#3
|
||||
|
||||
|
Что такое "по признаку, допустим bAlarm"?
А так, вот пример из drkb Код:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var myBrush: TBrush; begin myBrush := TBrush.Create; with (Control as TListBox) do begin if Items[index] = 'bAlarm' then myBrush.Color := clRed else myBrush.Color := clWhite; myBrush.Style := bsSolid; Windows.FillRect(Canvas.Handle, Rect, myBrush.Handle); Brush.Style := bsClear; Canvas.TextOut(Rect.Left, Rect.Top, Items[Index]); MyBrush.Free; end; end; |
|
#4
|
|||
|
|||
|
|
|
#5
|
|||
|
|||
|
Хорошо в ListBox цветные кнопки пишутся...
А как же их сохранять в файл и потом при загрузке из файла в ListBox строки сохраняли свои цвета? |
|
#6
|
||||
|
||||
|
Есть несколько вариантов, конкретно - показывайте свой код, и по нему можно определить какой из них подойдёт больше всего
|
|
#7
|
||||
|
||||
|
Цитата:
|
|
#8
|
|||
|
|||
|
В ListBox есть цветные строки.
Добавляю так: Код:
ListBox1.Items.AddObject(aStr, TObject(aColor)); и в методе DrawItem так: Код:
with ListBox1.Canvas do begin
//Извлекаем сведения о цвете фона и задаём для кисти этот цвет.
Brush.Color := TColor( ListBox1.Items.Objects[Index] );
//Закрашиваем прямоугольник, в который потом будет выведена строка.
FillRect(Rect);
//Выводим текст строки.
TextOut(Rect.Left, Rect.Top, ListBox1.Items[Index]);
end;как же сохранить их в файл и потом при загрузке из файла в ListBox строки сохраняли свои цвета? При Код:
ListBox1.Items.SaveToFile('h:\qqq.txt'); сохраняется только текст и цвет теряется.... При загрузке из файла в ListBox строки все одинаковые... Не ужели только приклеивать к строке какие то данные-потом их декодировать и т.д. - гемор! может есть метод более красивый подход?. |
|
#9
|
||||
|
||||
|
Нарисовались такие процедуры сохранения\загрузки
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
i : integer;
sl: TStrings;
begin
sl:= TStringList.Create;
sl.Assign(ListBox1.Items);
for i:= 0 to sl.Count -1 do
sl[i]:= ColorToString(TColor(sl.Objects[i]))+' '+sl[i];
sl.SaveToFile('qqq.txt');
sl.Free;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
i: integer;
sl: TStrings;
begin
sl:= TStringList.Create;
sl.LoadFromFile('qqq.txt');
with ListBox1 do
begin
Clear;
for i:= 0 to sl.Count -1 do
Items.AddObject(Copy(sl[i],Pos(' ',sl[i])+1,Length(sl[i])),
TObject(StringToColor(Copy(sl[i],1,Pos(' ',sl[i])-1))));
end;
sl.Free;
end;Последний раз редактировалось Alegun, 07.04.2015 в 15:16. |
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Gareth (19.04.2016)
| ||
|
#10
|
|||
|
|||
|
Вот ЧЕЛОВЕЧИЩЕ! Спасибо....
|