|
Вопрос # 4 453/ вопрос открыт / |
|
Здравствуйте!
В TListBox в рантайме меняю цвет с clWindow на clYellow. Все корректно. потом меняю обратно с clYellow на clWindow - цвет меняется только под текстом, на свободных полях строк остается желтый. Как это победить?
Приложение: Переключить в обычный режим- procedure TMainForm.setListBoxFocused(focused: boolean);
- begin
- if (focused) then
- begin
- ListBox1.Color := clYellow;
- end
- else
- begin
- ListBox1.Color := clWindow;
- end;
- end;
 |
Вопрос задал: AlexMPEI (статус: 1-ый класс)
Вопрос отправлен: 22 июля 2010, 11:29
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
В OnCreate формы поставь:
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox.DoubleBuffered:= True;
end;
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 22 июля 2010, 11:49
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 5; последнее сообщение — 22 июля 2010, 13:02; участников в обсуждении: 3.
|
Вадим К (статус: Академик), 22 июля 2010, 11:43 [#1]:
а если после изменения цвета добавить какой нибудь update или repaint для листбокса или формы, эффект останется?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 22 июля 2010, 11:54 [#2]:
Цитата (Вадим К):
а если после изменения цвета добавить какой нибудь update или repaint для листбокса или формы, эффект останется?
Останется. Я вот так проверял:
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox.Items.BeginUpdate();
try
if ListBox.Color = clWindow
then ListBox.Color:= clYellow
else ListBox.Color:= clWindow;
finally
ListBox.Items.EndUpdate();
end;
ListBox.Repaint();
ListBox.Update();
ListBox.Refresh();
ListBox.Invalidate();
end;
Странно, я раньше про такое поведение ListBox не знал, ибо в программах везде стараюсь оставлять стандартное оформление, на которое будут влиять системные настройки пользователей. Так демократичнее.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
AlexMPEI (статус: 1-ый класс), 22 июля 2010, 11:54 [#3]:
ListBox.DoubleBuffered:= True; помог, спасибо.
update или repaint, invalidate и т.п. эффекта не дают.
|
|
min@y™ (статус: Доктор наук), 22 июля 2010, 12:56 [#4]:
Цитата (AlexMPEI):
ListBox.DoubleBuffered:= True; помог, спасибо.
А где оценка "5"?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
AlexMPEI (статус: 1-ый класс), 22 июля 2010, 13:02 [#5]:
репутация +1
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|