Avatar billede ylwen Nybegynder
16. august 2002 - 12:01 Der er 4 kommentarer og
1 løsning

StringGrid og colonne størrelse

I mange programmer er det muligt at dobbelt klikke mellem to kolonner hvor efter den kolonne der er til venstre for markøren tilpasser sig længden af den tekst der er i kolonnen. Hvordan får jeg denne egenskab på min StringGrid?
Avatar billede hermandsen Juniormester
16. august 2002 - 19:35 #1
Jeg tror at det du tænker på er et ListView. Den har en indbygget funktion når du dobbeltklikker mellem kolonnerne! :)
Avatar billede ylwen Nybegynder
17. august 2002 - 08:41 #2
Og hvor finder jeg så list view, og kan den det samme som StringGrid?
Avatar billede hermandsen Juniormester
17. august 2002 - 09:45 #3
Et ListView kan mere end et StringGrid, men er lidt mere besværligt at bruge... TListView ligger under Win32-fanen.
Avatar billede ylwen Nybegynder
17. august 2002 - 16:46 #4
Har du nogen eksempler f.eks kilde kode til et eller andet hvor du har brugt listview?
Avatar billede hermandsen Juniormester
18. august 2002 - 12:24 #5
Ja da!!!
Der er ellers et udemærket eksempel i hjælpen, men here goes:

Først noget type-erklæring (behøves ikke, men det kan gøre det lettere senere hen):

type
  TFile = class(TObject)
    private
      vName: String;
      vDir: String;
      vSize: Integer;
      vID: Integer;
    published
      property Name: String read vName write vName;
      property Size: Integer read vSize write vSize;
      property Dir: String read vDir write vDir;
      property ID: Integer read vID write vID;
  end;
  PFile = ^TFile;


procedure TForm1.AddToListView(TheFile: PFile);
begin
  with lvFiles.Items.Add do
  begin
    Caption := TheFile^.Name;
    SubItems.Add(TheFile^.Dir);
    SubItems.Add(IntToStr(TheFile^.Size));
    SubItems.Add(IntToStr(TheFile^.ID));
  end;
end;


Fra hjælpen:

This example requires only a blank form.  All other objects: TListView, TListColumns, TListItems, are created dynamically.  You must add comctrls to the uses clause of the unit file.

procedure TForm1.FormCreate(Sender: TObject);
const
  Names: array[0..5, 0..1] of string = (
    ('Rubble', 'Barney'),
    ('Michael', 'Johnson'),
    ('Bunny', 'Bugs'),
    ('Silver', 'HiHo'),
    ('Simpson', 'Bart'),
    ('Squirrel', 'Rockey')
    );
var
  I: Integer;
  NewColumn: TListColumn;
  ListItem: TListItem;
  ListView: TListView;
begin
  ListView := TListView.Create(Self);
  with ListView do
  begin
    Parent := Self;

    Align := alClient;
    ViewStyle := vsReport;

    NewColumn := Columns.Add;
    NewColumn.Caption := 'Last';
    NewColumn := Columns.Add;
    NewColumn.Caption := 'First';

    for I := Low(Names) to High(Names) do
    begin
      ListItem := Items.Add;
      ListItem.Caption := Names[I][0];
      ListItem.SubItems.Add(Names[I][1]);
    end;
  end;
end;


Håber det bragte mere forståelse end forviring!

//hermandsen
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