Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Оплата за обучение в Kata Academy только после твоего трудоустройства в IT, начни карьеру Middle Java-разработчика


Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2011, 11:12   #1
{Shadowevil}
Пользователь
 
Регистрация: 15.01.2009
Сообщений: 52
Печаль Какой компонент использовать??

Здравствуйте! Уважаемые знатоки, очень нужна помощь. Подскажите компонент, если кто знает ... нужно чтобы он содержал в себе Items и чтобы в Items можно было заносить много строчный текст с построчным форматированием:

Итем 1:
Заголовок1
информация1
информация1


Итем 2:
Заголовок2
информация2
информация2


Как то так примерно
Пробовал экспериментировать со стандартными, но ничего не выходит, пробовал делать с ListView на onDrawItem, но тоже ничего не получилось
{Shadowevil} вне форума Ответить с цитированием
Старый 09.12.2011, 11:30   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,021
По умолчанию

RichEdit или WebBrowser(ие/геки)
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 09.12.2011, 11:36   #3
{Shadowevil}
Пользователь
 
Регистрация: 15.01.2009
Сообщений: 52
По умолчанию

RichEdit не подойдет, т.к. мне на итемы надо вешать события например на onChanging + мне надо знать индекс выбранного итема чтобы передать в это событие необходимый параметр для действия
{Shadowevil} вне форума Ответить с цитированием
Старый 10.12.2011, 00:46   #4
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Лучше всего написать свой компонент, на основе, например, TGraphicControl.
В нем в замененном методе OnPaint проприсовывать эти элементы на канве.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 11.12.2011, 11:39   #5
{Shadowevil}
Пользователь
 
Регистрация: 15.01.2009
Сообщений: 52
По умолчанию

Цитата:
Сообщение от chertovich Посмотреть сообщение
Лучше всего написать свой компонент, на основе, например, TGraphicControl.
В нем в замененном методе OnPaint проприсовывать эти элементы на канве.
это, наверное, будет самый правильный вариант, но увы, я еще не настолько владею Delphi, чтобы написать свой компонент
{Shadowevil} вне форума Ответить с цитированием
Старый 11.12.2011, 15:05   #6
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

А чем не подойдет обычный TTreeView, скажем?
Все, что потребуется это описать разную прорисовку для разных типов узлов - и вы получите результат в первом посте (при этом будет и индекс и тд).
kettanaito вне форума Ответить с цитированием
Старый 11.12.2011, 15:20   #7
{Shadowevil}
Пользователь
 
Регистрация: 15.01.2009
Сообщений: 52
По умолчанию

Цитата:
Сообщение от kettanaito Посмотреть сообщение
А чем не подойдет обычный TTreeView, скажем?
Все, что потребуется это описать разную прорисовку для разных типов узлов - и вы получите результат в первом посте (при этом будет и индекс и тд).
Есть условие что нельзя использовать TTreeView (
{Shadowevil} вне форума Ответить с цитированием
Старый 11.12.2011, 16:17   #8
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

{Shadowevil}, а почему не вышло с ListView?
kettanaito вне форума Ответить с цитированием
Старый 11.12.2011, 17:39   #9
{Shadowevil}
Пользователь
 
Регистрация: 15.01.2009
Сообщений: 52
По умолчанию

Цитата:
Сообщение от kettanaito Посмотреть сообщение
{Shadowevil}, а почему не вышло с ListView?
ну понимаешь, я пытался прописать все вручную на канве в onDrawItem отключив CustomDrawItem, но ничего не вышло путного, т.к. в инете совсем информации не нашел про работу в onDrawItem, там только onCustomDrawItem, а у самого получилось так, что текст вроде и прорисовывался, но после прорисовки сразу исчезал как при вызове Repaint (
{Shadowevil} вне форума Ответить с цитированием
Старый 11.12.2011, 18:03   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

Если с ListBox повозиться, то вполне можно сделать - там и прорисовка есть и высота настраиваемая. ListBox1.Style=lbOwnerDrawVariable
Код:
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
  for i:=0 to ListBox1.Items.Count-1 do begin
    ListBox1.ItemIndex:=i;
    ListBox1Click(ListBox1);
  end;
  ListBox1.ItemIndex:=0;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var xHeight: Integer;
begin
  if ListBox1.ItemIndex mod 3=0 then xHeight:=24
  else if ListBox1.ItemIndex mod 3=1 then xHeight:=20
  else xHeight:=16;
  SendMessage(ListBox1.Handle,LB_SetItemHeight,ListBox1.ItemIndex,xHeight);
end;

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var xColor: TColor;
begin
  if ListBox1.Count=0 then Exit;
  if (odSelected in State) and ListBox1.Focused then xColor:=clActiveCaption
  else if odSelected in State then xColor:=clBtnFace
  else xColor:=clWindow;
  ListBox1.Canvas.Brush.Color:=xColor;
  ListBox1.Canvas.FillRect(Rect);
  if (odSelected in State) and Control.Focused then ListBox1.Canvas.Font.Color:=clWindow
  else if Index mod 3=0 then ListBox1.Canvas.Font.Color:=clRed
  else if Index mod 3=1 then ListBox1.Canvas.Font.Color:=clLime
  else ListBox1.Canvas.Font.Color:=clBlue;
  if Index mod 3=0 then ListBox1.Canvas.Font.Size:=16
  else if Index mod 3=1 then ListBox1.Canvas.Font.Size:=12
  else ListBox1.Canvas.Font.Size:=8;
  ListBox1.Canvas.TextRect(Rect,Rect.Left+2,Rect.Top,ListBox1.Items.Strings[Index]);
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 11.12.2011 в 20:59.
Аватар вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой компонент использовать Кинельски Компоненты Delphi 5 23.06.2010 10:10
КАКОЙ КОМПОНЕНТ НАДО ИСПОЛЬЗОВАТЬ? Gareevbo Общие вопросы Delphi 2 08.06.2009 21:33
Подскажите какой использовать компонент Tanya2008 Компоненты Delphi 1 12.03.2009 21:37
Какой компонент использовать для отображения файлов devi409 Компоненты Delphi 8 15.02.2009 14:50
Какой компонент использовать? XPAiN БД в Delphi 3 05.05.2008 07:45

Реклама для незарегистрированных, регистрация на форуме