Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вставка многострочного текста в ListView.


Fenix ©   (2006-04-11 19:50:00) 

Доброго времени суток.
Меня интересует возможно ли добавить в LIstView многострочный текст? так, что бы он распределился на несколько строк, а не записывался весь в одну строку.


REA   (2006-04-13 10:41:00) [1]

В этом млучае придется повозиться...

А DirectUIHWND как то связан с Microsoft Active Accessibility. Продолжаю копать...


AbrosimovA   (2006-04-13 10:16:00) [2]


>  Но вот кнопочки и т.п. туда не напихать как в Add/Remove
> programs.


Заблуждение.

var
 Form1: TForm1;
 Button: TButton;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Button:=TButton.Create(Self);
Button.Parent:=ListView1;
end;


Положение каждого элемента Listview мы можем узнать в любой момент, после этого координаты кнопки меняем на нужные


REA   (2006-04-13 10:15:00) [3]

Я тоже уже глянул - странный класс окна прямо скажем. А его как то можно использовать?


Handle   (2006-04-12 17:44:00) [4]


> А вот хотя бы как в "Установка/Удаление программ".


Это не TListView это  DirectUIHWND


REA   (2006-04-12 17:39:00) [5]

Проще наверно через DrawText. Но вот кнопочки и т.п. туда не напихать как в Add/Remove programs.


Handle   (2006-04-12 17:22:00) [6]


> Не обязательно ListView, но какие другие компоненты позволяют
> сделать это?

ListBox

procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Style := lbOwnerDrawVariable;
 with ListBox1.Items do
 begin
   ListBox1.Items.AddObject('Что бы было удобно сотировать и удобное представление данных.', Pointer(clRed));
   ListBox1.Items.AddObject('"Установка/Удаление программ" хороший пример. Что-то вроде этого и нужно мне.
', Pointer(clGreen));
 end;
end;

procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer;
 var Height: Integer);
var
 i, PosSp: Integer;
 strVal: string;
 strTmp: string;
begin
 if Index >= 0 then
 begin
   strVal := ListBox1.Items[Index];
   strTmp := WrapText(strVal, 20);
   i := 1;
   while Pos(#$D#$A, strTmp) > 0 do
   begin
     i      := i + 1;
     strTmp := Copy(strTmp, Pos(#13#10, strTmp) + 2, Length(strTmp));
   end;
   Height := i * ListBox1.ItemHeight;
 end;
end;

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
var
 strVal: string;
 strTmp: string;
 intPos: Integer;
 i: Integer;
 rc: TRect;
begin
 with Control as TListBox do
  begin
    Canvas.FillRect(Rect);
    Canvas.Font.Color := TColor(Items.Objects[Index]);
    Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[Index]);
  end;
 strVal := WrapText(ListBox1.Items[Index], 20);
 i      := 0;
 ListBox1.Canvas.FillRect(Rect);
 while Pos(#$D#$A, strVal) > 0 do
 begin
   intPos := Pos(#$D#$A, strVal);
   if intPos > 0 then
     strTmp := Copy(strVal, 1, intPos - 1)  
   else
     strTmp := strVal;
   rc     := Rect;
   rc.Top := Rect.Top + i * ListBox1.ItemHeight;
   ListBox1.Canvas.TextRect(rc, Rect.Left, Rect.Top + i * ListBox1.ItemHeight,
     strTmp);
   strVal := Copy(strVal, intPos + 2, Length(strVal));
   Inc(i);
 end;
 rc     := Rect;
 rc.Top := Rect.Top + i * ListBox1.ItemHeight;
 ListBox1.Canvas.TextRect(rc, Rect.Left, Rect.Top + i * ListBox1.ItemHeight, strVal);
 ListBox1.Canvas.Brush.Style := bsClear;
 ListBox1.Canvas.Rectangle(Rect);

end;


Fenix   (2006-04-12 14:12:00) [7]

Вид vsReport.
Что бы было удобно сотировать и удобное представление данных.
Не обязательно ListView, но какие другие компоненты позволяют сделать это?
"Установка/Удаление программ" хороший пример. Что-то вроде этого и нужно мне.


REA   (2006-04-12 10:57:00) [8]

Мне тоже любопытно.
А вот хотя бы как в "Установка/Удаление программ".
Можно наверно самому сделать впрочем.


Германн   (2006-04-12 02:01:00) [9]

И ещё вопрос. А зачем!?
Зачем обязательно надоиспользовать для вывода многострочного текста именно ListView?


Gero   (2006-04-12 01:00:00) [10]

Какой вид ListView интересует и как ты себе это представляешь?


Наверх

Титульная страница Поиск, карта сайта Написать письмо