Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];

Вниз

Прогрессбар в ListView   Найти похожие ветки 

 
tovSuhov   (2003-12-19 23:22) [0]

Мастера, подскажите, как реализовать такую вещь - есть ListView (в стиле Report). Хочу, чтобы одна из колонок представляла собой колонку прогрессбаров для соответствующих строк (для каждой строки свой прогрессбар). Т.е. банально заливалась синим цветом в зависимости от некоторого значения, определенного для каждой строки.
Имеется ввиду также, возможно ли добиться этого, используя стандартные OnCustomDraw, OnCustomDrawItem и т.п.? И если возможно, то как именно (подскажите, а то я чего-то не понимаю видимо...)
Ну и напоследок, ежели в стандартном ListView такого добиться нельзя - может кто посоветует компонент, позволяющий сделать подобное (сохраняя, естественно, остальные возможности ListView).

С уважением и предварительной благодарностью, tovSuhov.


 
Игорь Шевченко   (2003-12-20 12:51) [1]

unit main;

interface

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

type
TThreadData = class
Thread : Integer;
Gauge : TGauge;
Progress : Integer;
end;

TfMain = class(TForm)
ListView: TListView;
Button: TButton;
procedure ListViewCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
procedure ButtonClick(Sender: TObject);
private
FNextThread : Integer;
procedure AddThread (ThreadID : Integer);
function GetSubItemRect (AListView : TListView; AListItem : TListItem; SubItemIndex : Integer) : TRect;
public
{ Public declarations }
end;

var
fMain: TfMain;

implementation

{$R *.DFM}

procedure TfMain.ListViewCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Assigned(Item.Data) then
with TThreadData(Item.Data) do
Gauge.Progress := Progress;
DefaultDraw := true;
end;

procedure TfMain.AddThread(ThreadID: Integer);
var
LI : TListItem;
ThreadData : TThreadData;
ARect : TRect;
begin
Inc(FNextThread);
LI := ListView.Items.Add();
LI.Caption := IntToStr(FNextThread);
ARect := GetSubItemRect(ListView, LI, 1);
ThreadData := TThreadData.Create();
ThreadData.Thread := FNextThread;
ThreadData.Progress := Random(100);
ThreadData.Gauge := TGauge.Create(Self);
with ThreadData.Gauge do begin
Parent := ListView;
ParentFont := false;
Left := ARect.Left;
Top := Succ(ARect.Top);
Width := ListView.Columns[1].Width;
Height := ARect.Bottom - ARect.Top - 1;
MaxValue := 100;
ForeColor := clNavy;
Visible := true;
end;
LI.Data := ThreadData;
end;

procedure TfMain.ButtonClick(Sender: TObject);
begin
AddThread(0);
end;

function TfMain.GetSubItemRect(AListView : TListView; AListItem : TListItem;
SubItemIndex: Integer): TRect;
var
I : Integer;
begin
Result := AListItem.DisplayRect(drBounds);
for I:=0 to Pred(SubItemIndex) do
Inc(Result.Left, ALIstView.Columns[I].Width);
end;

end.


 
tovSuhov   (2003-12-20 17:42) [2]

Огромное спасибо! Сейчас буду разбираться.



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

Форум: "Основная";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.011 c
6-12029
bul82
2003-11-03 16:38
2004.01.05
Программа удаленного управления


1-11958
Mip
2003-12-19 15:56
2004.01.05
Помогите с Word разобраться!


14-12114
Князь Мышкин
2003-12-13 22:45
2004.01.05
Система управления ядерным комплексом России.


4-12200
X-Disa
2003-11-04 15:34
2004.01.05
Memo - консоль


1-11866
Cat
2003-12-08 13:57
2004.01.05
Как очистить Ole-контейнер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский