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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ListBox, OwnerDraw 
:(
    Опции темы
z-END
Дата 19.1.2005, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



вот кусок кода:
Код

if odSelected in state then
 begin
  Brush.Color := clWindow;
  Pen.Color := clWindow;
  FillRect (Rect);
 {...}
end
else
begin
  Brush.Color := clWindow;
  Pen.Color := clWindow;
  FillRect (Rect);
  {...}
end;

Но при выделении Итема вокруг него отображается граница. как ее затереть?
ЗЫ пробывал увеличивать р-ры Rect ( Dec (Rect.Top,2) и т.п. не помогло)


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
s-mike
Дата 19.1.2005, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 16.1.2005
Где: Киев

Репутация: 9
Всего: 16



Дарю свой компонент. Позволяет разрешить/запретить отображение фокусирующей рамки:
Код

unit NewListBox;

interface

uses
 SysUtils, Classes, Controls, StdCtrls, Messages, Windows, Graphics;

type
 TNewListBox = class(TListBox)
 private
   FDrawFocusRect: Boolean;
   procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM;
   procedure SetDrawFocusRect(const Value: Boolean);
 public
   constructor Create(AOwner: TComponent); override;
 published
   property DrawFocusRect: Boolean read FDrawFocusRect write SetDrawFocusRect default False;
 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents('MSX Controls', [TNewListBox]);
end;

constructor TNewListBox.Create(AOwner: TComponent);
begin
 inherited;

end;

procedure TNewListBox.CNDrawItem(var Message: TWMDrawItem);
var
 State: TOwnerDrawState;
begin
 with Message.DrawItemStruct^ do
 begin
   State := TOwnerDrawState(LongRec(itemState).Lo);
   Canvas.Handle := hDC;
   Canvas.Font := Font;
   Canvas.Brush := Brush;
   if (Integer(itemID) >= 0) and (odSelected in State) then
   begin
     Canvas.Brush.Color := clHighlight;
     Canvas.Font.Color := clHighlightText
   end;
   if Integer(itemID) >= 0 then
     DrawItem(itemID, rcItem, State) else
     Canvas.FillRect(rcItem);
   if (odFocused in State) and FDrawFocusRect then Windows.DrawFocusRect(hDC, rcItem);
   Canvas.Handle := 0;
 end;
end;

procedure TNewListBox.SetDrawFocusRect(const Value: Boolean);
begin
 if FDrawFocusRect <> Value then
 begin
   FDrawFocusRect := Value;
   Invalidate;
 end;
end;

end.

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

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

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

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

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


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

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


 




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


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

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