Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.21;
Скачать: CL | DM;

Вниз

Вставка многострочного текста в ListView.   Найти похожие ветки 

 
Fenix ©   (2006-04-11 19:50) [0]

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


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

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


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

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


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

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


 
Fenix ©   (2006-04-12 14:12) [4]

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


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


> Не обязательно 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;


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

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


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


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


Это не TListView это  DirectUIHWND


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

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


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


>  Но вот кнопочки и т.п. туда не напихать как в 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:41) [10]

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

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



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

Текущий архив: 2006.05.21;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
2-1146659381
Wood
2006-05-03 16:29
2006.05.21
Info для приложения.


3-1143716463
wsm-100
2006-03-30 15:01
2006.05.21
Как получить список имен БД на сервере MSSQL


2-1146730834
Alex7
2006-05-04 12:20
2006.05.21
Обработка EDataBaseError


2-1146174430
NightHunter
2006-04-28 01:47
2006.05.21
Как записать record в файл и потом ее считать?Плииз ОЧЕНЬ срочно


2-1146570773
jenya_rus
2006-05-02 15:52
2006.05.21
Побайтная загрузка файла...