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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #106  
Старый 10.12.2012, 03:17
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Думаю по готовому примеру будет легче разобраться.
Вложения
Тип файла: rar demo.rar (19.2 Кбайт, 10 просмотров)
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
sariman (10.12.2012)
  #107  
Старый 10.12.2012, 20:00
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Спасибо! Ваш пример хорошо работает, а вот с моим что-то не так. Посмотрите. Да и как убрать заголовки в ListView и третью колонку (из-за неё появляется долбанный скроллинг)?
Вложения
Тип файла: rar New.rar (60.9 Кбайт, 11 просмотров)
Ответить с цитированием
  #108  
Старый 11.12.2012, 00:11
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Подправил.
Вложения
Тип файла: rar jc.rar (4.3 Кбайт, 9 просмотров)
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
sariman (11.12.2012)
  #109  
Старый 11.12.2012, 00:34
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Спасибо! Но всплывающее меню не отображается
Ответить с цитированием
  #110  
Старый 11.12.2012, 00:39
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

У меня нормально отображается. Ресурсный файл пересоздал?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #111  
Старый 11.12.2012, 01:23
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Точно! Спасибо. Еще вопрос: как выделить строку в ListView?
Ответить с цитированием
  #112  
Старый 11.12.2012, 01:31
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Программно?
Код:
  LV_SetFocused(PlayList, Index, True);
  LV_SetSelected(PlayList, Index, True);
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #113  
Старый 11.12.2012, 01:32
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Блин не правильно сформулировал вопрос. Я имел ввиду как сделать шрифт элемента жирным?
Ответить с цитированием
  #114  
Старый 11.12.2012, 01:38
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Создать ListView со стилем LVS_OWNERDRAWFIXED и обрабатывать сообщение WM_DRAWITEM.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #115  
Старый 11.12.2012, 01:39
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

А дальше..?))
Ответить с цитированием
  #116  
Старый 11.12.2012, 01:42
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Дальше отрисовывать все итемы вручную. Так понимаю нужен пример?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #117  
Старый 11.12.2012, 02:00
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Разумеется. Это же не VCL
Ответить с цитированием
  #118  
Старый 11.12.2012, 02:08
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Ну понятно.

в Util.pas добавить
Код:
procedure DSFillRect(DC : HDC; const Rect : TRect; Color : TColorRef);
...
procedure DSFillRect(DC : HDC; const Rect : TRect; Color : TColorRef);
var
  Brush : HBRUSH;
begin
  Brush := CreateSolidBrush(Color);
  try
    Windows.FillRect(DC, Rect, Brush);
  finally
    DeleteObject(Brush);
  end;
end;
в dpr добавить
Код:
procedure ListViewDrawItem(lpdis : PDRAWITEMSTRUCT);
var
  aRect	  : TRect;
begin
  aRect := lpdis.rcItem;
  DSFillRect(lpdis.hDC, aRect, clWhite);

  if Integer(lpdis.itemID + 1) > LV_GetTopIndex(PlayList) + LV_GetVisibleRowCount(PlayList) then
    Exit;

  if ((lpdis.itemState and CDIS_SELECTED) = CDIS_SELECTED) then
  begin
    DSFillRect(lpdis.hDC, aRect, clLime);
    SetTextColor(lpdis.hDC, clWhite);
    SetBkColor(lpdis.hDC, clLime);
  end
  else
    SetTextColor(lpdis.hDC, clBlack);

  aRect := LV_GetSubItemRect(PlayList, lpdis.itemID, 0, lvLabel);
  DrawText(lpdis.hDC, PChar(Format('%d.', [lpdis.itemID + 1])), -1, aRect, DT_RIGHT or DT_VCENTER);
  aRect := LV_GetSubItemRect(PlayList, lpdis.itemID, 1, lvLabel);
  aRect.Left := aRect.Left + 4;
  DrawText(lpdis.hDC, PChar(LV_GetItemText(PlayList, lpdis.itemID, 1)), -1, aRect, DT_VCENTER or DT_END_ELLIPSIS);
end;
...
function WindowProc(Wnd: HWND; Msg, wParam, lParam: Integer): Integer; stdcall;
...
  case Msg of
...
    WM_DRAWITEM :
    begin
      if PDRAWITEMSTRUCT(lParam)^.CtlType = ODT_LISTVIEW then
	ListViewDrawItem(PDRAWITEMSTRUCT(lParam));
    end;
...
Util.pas возьми тот, в котором были прописаны константы цветов.
Здесь нет выделения жирным шрифтом, выделяется цветом.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
sariman (11.12.2012)
  #119  
Старый 11.12.2012, 02:31
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Добавил выделение жирным шрифтом, ну и, как обычно, сам пример.
Вложения
Тип файла: rar jc.rar (10.0 Кбайт, 10 просмотров)
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
sariman (11.12.2012)
  #120  
Старый 11.12.2012, 10:09
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Огромное спасибо! Есть одна проблемка: при добавлении файлов не все элементы отрисовываются, как исправить?
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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