Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как в ListView изменить цвет columns со стандартон 
:(
    Опции темы
p0s0l
Дата 8.8.2003, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Может быть можно какими-нибудь стандартными фичами рисовать 3D-окантовку,
но я не знаю как... Поэтому вот ручной способ, ничем не отличается от стандартного 3D:

Код

function newProc(hw: HWND; msg: UINT; wP: WPARAM; lP: LPARAM): LRESULT; stdcall;
var
ph: PNMCustomDraw absolute lp;
c: TCanvas;
handled : boolean;
x1, x2, y1, y2 : integer;
begin
 handled := false;
 if msg = WM_NOTIFY then
   if (ph.hdr.code = NM_CUSTOMDRAW) then
   begin
     c := TCanvas.Create;
     c.Handle := ph.hdc;
     case ph.dwDrawStage of
       CDDS_PREPAINT:
         begin
           c.Brush.Color := clMoneyGreen;
           c.Brush.Style := bsSolid;
           c.Pen.Style := psSolid;
           c.Pen.Color := clMoneyGreen;
           c.Rectangle(ph.rc);

           Result := CDRF_NOTIFYITEMDRAW;// + CDRF_NOTIFYPOSTPAINT;
           handled := true;
         end;
       CDDS_ITEMPREPAINT:
         with c do
         begin
// begin of 3D
           x1 := ph.rc.Left;
           x2 := ph.rc.Right-1;
           y1 := ph.rc.Top;
           y2 := ph.rc.Bottom-1;

           Pen.Color := clBtnHighlight;
           MoveTo(x1, y2-1);
           LineTo(x1, y1);
           LineTo(x2, y1);
           Pen.Color := cl3DLight;
           MoveTo(x1+1, y2-2);
           LineTo(x1+1, y1+1);
           LineTo(x2-1, y1+1);

           Pen.Color := cl3DDkShadow;
           MoveTo(x1, y2);
           LineTo(x2, y2);
           LineTo(x2, y1-1);
           Pen.Color := clBtnShadow;
           MoveTo(x1+1, y2-1);
           LineTo(x2-1, y2-1);
           LineTo(x2-1, y1);

// end of 3D paint

           InflateRect(ph.rc, -2, -2);
           if ph.dwItemSpec < Form1.ListView1.Columns.Count then
           Brush.Style := bsClear;
           DrawText(c.Handle,
                    PChar(Form1.ListView1.Columns[ph.dwItemSpec].Caption),  
                    Length(Form1.ListView1.Columns[ph.dwItemSpec].Caption),
                    ph.rc,
                    DT_END_ELLIPSIS or DT_VCENTER or DT_CENTER);

           Result := CDRF_SKIPDEFAULT;
           handled := true;
         end;
     end;
     c.Free;
   end;

 if not handled then Result := CallWindowProc(oldProc, hw, msg, wP, lP);
end;




--------------------
С уважением, г-н Посол.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0417 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.