Avatar billede rkb Nybegynder
31. maj 2001 - 13:09 Der er 4 kommentarer og
1 løsning

TListView - Row Height

Er der nogle måder man kan specificere Row højden på en TListView i CustomDrawItem, - jeg vil ikke ud i at skulle custom drawe det hele, man bare at kunne sætte rowheigh.

/RkB
Avatar billede sjensen Nybegynder
31. maj 2001 - 13:30 #1
Du bør kunne sætte højde og bredde på det enkelte item via RECT parametren.
Eks. på OnDrawItem

procedure TForm1.ListView1DrawItem(Sender: TCustomListView;
Item: TListItem; Rect: TRect; State: TOwnerDrawState);

Rect er en TRect der er defineret som

type
  TRect = record
  case Integer of
    0: (Left, Top, Right, Bottom: Integer);
    1: (TopLeft, BottomRight: TPoint);
end;

ved at ændre på left, top, bottom og right kan du ændre størrelse og placering
Avatar billede rkb Nybegynder
31. maj 2001 - 15:09 #2
Det virker ikke - jeg skal have det på CustomDrawItem uden at skulle til at tegne det hele selv... (ikke ownerdrawend)
Avatar billede borrisholt Novice
31. maj 2001 - 16:48 #3
rkb  >> Du kan ikke kommen uden om at skulle tegne det hele selv !!!!! Enten er du tilfreds med det listboxen tegner for dig ellers må du tegne noget nyt .....


Hvis du vil ændere på Højden af de enkelte Items i din listbox gøres det ikke i ListView1DrawItem() som sjensen foreslår men der i mod i ListBox1MeasureItem(). Det kræver dog at du forinden har sat ListBox1.Style := lbOwnerDrawVariable;

Det klassiske eksempel er en llistbox der viser slle instaleret fonte, skrevet med hver deres font :


ene form og en listbox. Formen skal have et onCreate event og din listbox skal have et OnDrawItem event og et OnMeasureItem event. Så skrives som følger :

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
    procedure ListBox1MeasureItem(Control: TWinControl; Index: Integer;
      var Height: Integer);
    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  ListBox1.Style := lbOwnerDrawVariable;
  ListBox1.Items.Assign(Screen.Fonts);
end;

procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer;  var Height: Integer);
begin
  with ListBox1.Canvas do
  begin
    Font.Name := Listbox1.Items[Index];
    Font.Size := 0;                // Brug fornte\'s foretrukkende størelse
    Height := TextHeight(\'Wg\') + 2; // Mål højden på dit Item med et højt og et lavt bogstave
  end;
end;

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
  s : String;
begin
  with ListBox1.Canvas do
  begin
    FillRect(Rect); //mal baggrunden
    Font.Name := ListBox1.Items[Index];
    Font.Size := 0;    // Brug fornte\'s foretrukkende størelse
    TextOut(Rect.Left+1, Rect.Top+1, ListBox1.Items[Index]); //tegn teksten
  end;
end;

end.


jens b http://fotx.net/borrisholt
Avatar billede rkb Nybegynder
31. maj 2001 - 16:50 #4
Det er ikke en TListBox men en TListView.
Avatar billede rkb Nybegynder
19. november 2001 - 16:22 #5
lukker vist lige den her ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Tech Lead til Datacenter Operations

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Ingeniør til Satellitkommunikation

Netcompany A/S

Linux Operations Engineer