Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.23;
Скачать: CL | DM;

Вниз

ListView и SubItems   Найти похожие ветки 

 
[lamer]Barmaglot ©   (2003-01-14 10:37) [0]

Кто - нибудь подскажите такую вещь, если в коде убрать комментарий со строки ListView1.OwnerDraw:=true; то SubItems исчезает, при это Items остается. С чем это связано. Как его вернуть?

procedure TForm1.Button1Click(Sender: TObject);
var
k: integer;
begin
randomize;
For k:=1 to 100 do
begin
Listview1.Items.Add.Caption:=inttostr(Random(100));
Listview1.Items.Item[Listview1.Items.Count-1].SubItems.Text:=inttostr(Random(100));
// Listview1.OwnerDraw:=true;
end;
end;

Извините за ламерские вопросы...


 
still ©   (2003-01-14 10:49) [1]

Не исчезает, а просто не отрисовывается. Ты ж хочешь owner draw, вот сам рисуй чего хошь в On[Advanced]CustomDraw


 
[lamer]Barmaglot ©   (2003-01-14 10:54) [2]

А почему тогда обычный Item прорисовывается? Кроме того разве нельзя написать что-нибудь типа Inherited, что бы комп прорисовывал все как обычно, а мне менять только в нужный момент?


 
still ©   (2003-01-14 11:00) [3]

Delphi Help:

TCustomListView.OnCustomDraw

Occurs when an owner-draw list view must be rendered.

type TLVCustomDrawEvent = procedure(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean) of object;
property OnCustomDraw: TLVCustomDrawEvent;

Description

Write an OnCustomDraw event handler to draw to the list view"s Canvas before its items are painted. OnCustomDraw occurs only if the OwnerDraw property is True.

Sender is the list view that is about to be painted.

ARect indicates the dimensions of the list view on its Canvas.

DefaultDraw indicates whether the list view should continue with the default painting after the event handler exits.Set DefaultDraw to False to prevent the drawing of the list view after event handler exits. If DefaultDraw remains set to True, the list view continues with the default painting process.

Note: OnCustomDraw occurs immediately prior to the rendering of the list view control. To augment the default drawing process at other stages (such as when the background is erased or after the list view is drawn), use the OnAdvancedCustomDraw event instead.

Короче, книга - источник знаний :)


 
[lamer]Barmaglot ©   (2003-01-14 11:23) [4]

Я так понимаю DefaultDraw по умолчанию True, тогда почему Subitems не выводятся?

Посмотрел твои ответы в соседней ветке, попробовал сделать тоже самое, но чего-то не получается посмотри код пожалуйста.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
ListView1: TListView;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
k: integer;
begin
randomize;
For k:=1 to 100 do
begin
Listview1.Items.Add.Caption:=inttostr(Random(100));
Listview1.Items.Item[Listview1.Items.Count-1].SubItems.Text:=inttostr(Random(100));
Listview1.OwnerDraw:=true;
end;
Listview1.Items.Add.Caption:="5";
end;

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if StrToInt(Item.Caption)<20 then
begin
Sender.Canvas.Brush.Color := clRed
Sender.Canvas.Font.Color := clWhite;
end;
end;

end.

Почему-то не работает :(


 
still ©   (2003-01-14 11:31) [5]

просто убери ownerdraw:=true


 
[lamer]Barmaglot ©   (2003-01-14 11:48) [6]

Thank You.

Плохо быть бестолковым :).


 
still ©   (2003-01-14 11:54) [7]

да не плохо :)



Страницы: 1 вся ветка

Текущий архив: 2003.01.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
1-72196
Leran2002
2003-01-14 10:03
2003.01.23
на счет WebBrowser


3-72070
Natalie
2003-01-05 21:29
2003.01.23
помогите с отчетам!!


14-72501
Шоломицкий
2003-01-06 14:59
2003.01.23
Кто-нить пробовал программу DESKBUTTONS?


14-72499
zolotov
2003-01-06 16:10
2003.01.23
Нет компонентов на вкладке Sample


1-72197
Соловьев
2003-01-14 10:00
2003.01.23
Для чего используют Pred?