Текущий архив: 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, но какие другие компоненты позволяют
> сделать это?
ListBoxprocedure 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