listview com duas linhas para cada registro
Queria fazer um listview com duas linhas para cada registro, tipo assim
codigo nome endereco
12 maria rua aquela la
dos santos 100
13 joao rua b
silva 200
codigo nome endereco
12 maria rua aquela la
dos santos 100
13 joao rua b
silva 200
Nei
Curtidas 0
Respostas
Dorivan Sousa
24/06/2015
seria uma quebra de linha? mas continuaria na mesma coluna e nao no inicio da prox linha.
codigo nome endereco
12 maria rua aquela la
dos santos 100
13 joao rua b
silva 200
GOSTEI 0
Dorivan Sousa
24/06/2015
se for isso aqui tem como fazer. tem que setar o OwnerDraw para true
fonte: http://stackoverflow.com/questions/1877365/add-2-line-caption-in-a-tlistview
fonte: http://stackoverflow.com/questions/1877365/add-2-line-caption-in-a-tlistview
type
TForm1 = class(TForm)
ListView1: TListView;
procedure FormCreate(Sender: TObject);
procedure ListView1DrawItem(Sender: TCustomListView; Item: TListItem;
Rect: TRect; State: TOwnerDrawState);
private
procedure WMMeasureItem(var AMsg: TWMMeasureItem); message WM_MEASUREITEM;
end;
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
ListView1.ViewStyle := vsReport;
ListView1.OwnerDraw := True;
ListView1.OwnerData := True;
ListView1.Items.Count := 1000;
with ListView1.Columns.Add do begin
Caption := 'Multiline string test';
Width := 400;
end;
ListView1.OnDrawItem := ListView1DrawItem;
end;
procedure TForm1.ListView1DrawItem(Sender: TCustomListView;
Item: TListItem; Rect: TRect; State: TOwnerDrawState);
begin
if odSelected in State then begin
Sender.Canvas.Brush.Color := clHighlight;
Sender.Canvas.Font.Color := clHighlightText;
end;
Sender.Canvas.FillRect(Rect);
InflateRect(Rect, -2, -2);
DrawText(Sender.Canvas.Handle,
PChar(Format('Multiline string for'#13#10'Item %d', [Item.Index])),
-1, Rect, DT_LEFT);
end;
procedure TForm1.WMMeasureItem(var AMsg: TWMMeasureItem);
begin
inherited;
if AMsg.IDCtl = ListView1.Handle then
AMsg.MeasureItemStruct^.itemHeight := 4 + 2 * ListView1.Canvas.TextHeight('Wg');
end;
GOSTEI 0