Dynamiczne dodawanie danych do ListView

Odpowiedz Nowy wątek
2011-08-12 23:38
userup
0

Witam
Mam pewien formularz. Na nim 5 editów. Pierwsze 2 edity zawierają nazwę itemu i subitemu (2 kolumny) do listview (vsReport). Pozostałe 3 edity chciałbym, aby zawierały się w tym dodanym itemie (pozycji), jednak aby nie były one widoczne. Później po kliknięciu dwa razy na ten dodany item - chciałbym wyświetlić te dane, które dodałem w tych pozostałych 3 editach. Wszystko było by ok, gdybym dodał jedną pozycję do ListView :). Wtedy przypisuję sobie do zmiennych. Ale co, jeśli dodam 1000 pozycji? Przypuszczam, że muszę dodać do tablicy, ale w jaki sposób? A może jakiś inny pomysł?

Czekaj czekaj, Ty w ogóle umiesz robić zmienne? Bo z tego co widzę - nie. Z tego co wyczytałem z twojego bełkotu, potrzebujesz tablic. - payl 2011-08-12 23:52
Do czego? - kAzek 2011-08-13 06:37

Pozostało 580 znaków

2011-08-13 07:09
0

Jeżeli dobrze zrozumiałem chodzi o coś takiego, zamiast obiektu właściwie mógłby być rekord ale wolę tak:

unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls;
 
type
  TMyObject = class
  private
    fField1: string;
    fField2: string;
    fField3: string;
  public
    property Field1: string read fField1 write fField1;
    property Field2: string read fField2 write fField2;
    property Field3: string read fField3 write fField3;
  end;
 
  TForm1 = class(TForm)
    btnAdd: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    ListView1: TListView;
    Button1: TButton;
    procedure btnAddClick(Sender: TObject);
    procedure ListView1Deletion(Sender: TObject; Item: TListItem);
    procedure ListView1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.btnAddClick(Sender: TObject);
var
  Item: TListItem;
begin
  Item:= ListView1.Items.Add;
  Item.Caption:= Edit1.Text;
  Item.SubItems.Add(Edit2.Text);
  Item.Data:= TMyObject.Create;
  TMyObject(Item.Data).Field1:=  Edit3.Text;
  TMyObject(Item.Data).Field2:=  Edit4.Text;
  TMyObject(Item.Data).Field3:=  Edit5.Text;
end;
 
procedure TForm1.ListView1Deletion(Sender: TObject; Item: TListItem);
begin
  TMyObject(Item.Data).Free; //zwalnianie dziala przy Delete, Clear i niszczeniu ListView
end;
 
procedure TForm1.ListView1Click(Sender: TObject);
begin
  if (ListView1.SelCount = 1) then
  begin
    Edit3.Text:= TMyObject(ListView1.Selected.Data).Field1;
    Edit4.Text:= TMyObject(ListView1.Selected.Data).Field2;
    Edit5.Text:= TMyObject(ListView1.Selected.Data).Field3;
  end;
end;
 
end.

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 1x, ostatnio: kAzek, 2011-08-13 07:09

Pozostało 580 znaków

2011-08-13 10:30
userup
0

Ogromne dzięki! O to mi właśnie chodziło :) Dzięki!
Temat do zamknięcia.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0