Текущий архив: 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.017 c