Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.08.2012, 20:25
Arvo Arvo вне форума
Прохожий
 
Регистрация: 03.07.2012
Сообщения: 29
Версия Delphi: XE2
Репутация: 10
По умолчанию ListBox

Привет. Такая проблема: в ListBox добавляются сообщения анализатора, но когда сообщения не помещаются в клиентскую область бокса, то видны только первые сообщения. Как сделать, чтобы листбокс проматывался до последнего сообщения? И еще, как рисовать разные элементы листбокса разным цветом?
Ответить с цитированием
  #2  
Старый 02.08.2012, 21:16
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

Цитата:
Как сделать, чтобы листбокс проматывался до последнего сообщения?
Код:
ListBox1.TopIndex:=ListBox1.Items.Count-1; 
либо Perform()
Цитата:
И еще, как рисовать разные элементы листбокса разным цветом?
Код:
property OnDrawItem: TDrawItemEvent;
TDrawItemEVent = procedure(ListBox: TListBox; Index: Integer;
Rect: TRect; 
State: TOwnerDrawState) of object;
(не забывать про стили IbOwnerDrawFixed или IbOwnerDrawVariable)
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
Этот пользователь сказал Спасибо cotseec за это полезное сообщение:
Arvo (05.08.2012)
  #3  
Старый 02.08.2012, 21:36
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Пример из DRKB. Необходимо изменить свойство Style в TListBox на lbOwnerDrawFixed, иначе событие OnDrawItem никогда не произойдёт. Обработчик события OnDrawItem TListBox:
Код:
 
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;

или:

Код:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; 

Rect: TRect; State: TOwnerDrawState); 

begin 
With ListBox1 do begin 

 If odSelected in State then 
 Canvas.Brush.Color:=clTeal { твой цвет } 
 else 
 Canvas.Brush.Color:=clWindow; 
 Canvas.FillRect(Rect); 
 Canvas.TextOut(Rect.Left+2,Rect.Top,Items[Index]); 
end; 

end;

С ListBox1.ItemIndex:= ListBox1.Count - 1 полностью согласен.
Ответить с цитированием
  #4  
Старый 05.08.2012, 16:41
Arvo Arvo вне форума
Прохожий
 
Регистрация: 03.07.2012
Сообщения: 29
Версия Delphi: XE2
Репутация: 10
По умолчанию

Цитата:
Пример из DRKB
Не работает ни один код
Ответить с цитированием
  #5  
Старый 05.08.2012, 16:59
Arvo Arvo вне форума
Прохожий
 
Регистрация: 03.07.2012
Сообщения: 29
Версия Delphi: XE2
Репутация: 10
По умолчанию

А все разобрался, это у меня в коде косяки были
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:19.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025