|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Цветные строки в ListBox и в файле
Подскажите, пожалуйста...
Как сделать 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
|
|||
|
|||
Вот ЧЕЛОВЕЧИЩЕ! Спасибо....
|