Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4

Модерирует : ShIvADeSt

ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
procedure CheckListBox_OnDrawItem(lpdis : PDRAWITEMSTRUCT);
var
  tchBuffer : Array [0..MAX_PATH] of WideChar;
  itemdata  : LongInt;
  BrushNew  : hBrush;
  BrushOld  : hBrush;
  PenBrush  : hPen;
begin
  if lpdis.ItemID > -1 then
    begin
      if ((lpdis.itemState and ODS_SELECTED) <> 0) then
        begin
          BrushNew := CreateSolidBrush(RGB(235, 235, 250));
          BrushOld := SelectObject(lpdis.hdc, BrushNew);
          FillRect(lpdis.hdc, lpdis.rcItem, BrushNew);
          PenBrush := CreatePen(PS_SOLID, 1, RGB(65, 105, 225));
          SelectObject(lpdis.hdc, PenBrush);
          Rectangle(lpdis.hdc, lpdis.rcItem.Left, lpdis.rcItem.Top, lpdis.rcItem.Right, lpdis.rcItem.Bottom);
          DeleteObject(PenBrush);
          SetBkColor(lpdis.hdc, RGB(235, 235, 250));
          SelectObject(lpdis.hdc, BrushOld);
          DeleteObject(BrushNew);
          SetBkMode(lpdis.hdc, TRANSPARENT);
          SetTextColor(lpdis.hdc, RGB(255, 0, 0));
        end
      else
        begin
          FillRect(lpdis.hdc, lpdis.rcItem, GetSysColorBrush(COLOR_WINDOW));
          SetBkColor(lpdis.hdc, GetSysColor(COLOR_WINDOW));
          SetTextColor(lpdis.hdc, GetSysColor(COLOR_WINDOWTEXT));
          if (lpdis.itemID mod 2) <> 0 then
            begin
              BrushNew := CreateSolidBrush(RGB(240, 240, 240));
              BrushOld := SelectObject(lpdis.hdc, BrushNew);
              FillRect(lpdis.hdc, lpdis.rcItem, BrushNew);
              SetBkColor(lpdis.hdc, RGB(240, 240, 240));
              SelectObject(lpdis.hdc, BrushOld);
              DeleteObject(BrushNew);
            end;
        end;
      if ((lpdis.itemState and ODS_FOCUS) <> 0) then
        DrawFocusRect(lpdis.hdc, lpdis.rcItem);
      itemdata := SendMessageW(lpdis.hwndItem, LB_GETITEMDATA, lpdis.itemID, 0);
      if itemdata <> 0 then
        begin
          if InitThemeLibrary and UseThemes then
            DrawThemeBackground(CheckTheme, lpdis.hdc, BP_CHECKBOX, CBS_CHECKEDNORMAL, Rect(lpdis.rcItem.Left + 2, lpdis.rcItem.Top + 2, lpdis.rcItem.Left + lpdis.rcItem.Bottom - lpdis.rcItem.Top - 1, lpdis.rcItem.Bottom - 2), nil)
          else
            DrawFrameControl(lpdis.hdc, Rect(lpdis.rcItem.Left + 2, lpdis.rcItem.Top + 2, lpdis.rcItem.Left + lpdis.rcItem.Bottom - lpdis.rcItem.Top - 1, lpdis.rcItem.Bottom - 2), DFC_BUTTON, DFCS_BUTTONCHECK or DFCS_CHECKED or DFCS_FLAT);
        end
      else
        begin
          if InitThemeLibrary and UseThemes then
            DrawThemeBackground(CheckTheme, lpdis.hdc, BP_CHECKBOX, CBS_UNCHECKEDNORMAL, Rect(lpdis.rcItem.Left + 2, lpdis.rcItem.Top + 2, lpdis.rcItem.Left + lpdis.rcItem.Bottom - lpdis.rcItem.Top - 1, lpdis.rcItem.Bottom - 2), nil)
          else
            DrawFrameControl(lpdis.hdc, Rect(lpdis.rcItem.Left + 2, lpdis.rcItem.Top + 2, lpdis.rcItem.Left + lpdis.rcItem.Bottom - lpdis.rcItem.Top - 1, lpdis.rcItem.Bottom - 2), DFC_BUTTON, DFCS_BUTTONCHECK or DFCS_FLAT);
        end;
      SendMessageW(lpdis.hwndItem, LB_GETTEXT, lpdis.itemID, LPARAM(@tchBuffer));
      lpdis.rcItem.Left := lpdis.rcItem.Left + 22;
      lpdis.rcItem.Right := lpdis.rcItem.Right - 5;
      DrawTextW(lpdis.hdc, @tchBuffer[0], -1, lpdis.rcItem, DT_SINGLELINE or DT_VCENTER);
    end
  else
    begin
      FillRect(lpdis.hdc, lpdis.rcItem, GetSysColorBrush(COLOR_WINDOW));
      SetBkColor(lpdis.hdc, GetSysColor(COLOR_WINDOW));
      SetTextColor(lpdis.hdc, GetSysColor(COLOR_WINDOWTEXT));
      DrawTextW(lpdis.hdc, PWideChar(szEmptyStr), -1, lpdis.rcItem, DT_SINGLELINE or DT_VCENTER or DT_CENTER);
    end;
end;

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 12:00 03-11-2008
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4
ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru