Текущий архив: 2003.03.03;
Скачать: CL | DM;
ВнизListView Найти похожие ветки
← →
Dzmitry (2003-02-15 20:22) [0]повторю вопрос - как вставить в ListView ProgressBar, что было нечто подобное, как ReGet... или хотя бы идея как подступиться к подобному, хотя просто рисование - это не то...
← →
dzmitry (2003-02-16 12:05) [1]так никто и не ответил...
неужели никто не знает как вставить изображение в SubItems?
← →
Asker (2003-02-17 01:24) [2]создать наследника с перекрытым paint
← →
MBo (2003-02-17 06:16) [3]у ListView куча событий CustomDrawXXX
И никакого наследника не нужно.
Можно и TGauge в него засунуть.
← →
dzmitry (2003-02-18 08:44) [4]ладно, я уже как-то выкрутился, хотя это и не правильно, но при изменении ширины колонок не вызывается событий...
(vsReport). а тут как быть?
← →
MBo (2003-02-18 08:45) [5]ловить WM_notify с hdn_*** у родителя ListView
← →
MBo (2003-02-18 08:54) [6]кстати, это необязательно, если по CustomDraw делаешь - там же известен прямоуг. вывода
← →
Yuri-7 (2003-02-18 10:53) [7]Попробуй проще - заполняй символами ||||||||||. Можно цветными
← →
CAHbKA (2003-02-18 11:20) [8]ProgressBar1->Parent = StatusBar;
кажется так
← →
Игорь Шевченко (2003-02-18 11:25) [9]Пример:
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 begin
Gauge.Progress := Progress;
// Gauge.Refresh();
end;
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.
← →
dzmitry (2003-02-21 11:24) [10]что ж, код просмотрел, я практически так уже сделал, только с учётом, скроллинга (а здесь он не работает)...
а отлов изменения ширины колонок всё равно отсутствует...
Страницы: 1 вся ветка
Текущий архив: 2003.03.03;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.008 c