Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.02 c
14-5747
jen_bond
2003-02-16 10:20
2003.03.03
Автозапуск для cd-rom.


1-5614
Kair
2003-02-20 05:32
2003.03.03
OpenDialog


3-5398
Dikma
2003-02-12 13:06
2003.03.03
Временные файлы dBase


9-5371
Fog
2002-09-10 18:45
2003.03.03
Блики линз (просто рассуждение)


3-5450
_BasiL_
2003-02-13 13:15
2003.03.03
DBGrid без BDE