ListView

0

unit Unit2;

interface

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

type
TForm2 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Button1: TButton;
Button2: TButton;
ListView1: TListView;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

type

TDane = packed record
nazwa : String[25];
tel_kom : String[25];
tel_stac : String[25];
email : String[25];

end;

var
Form2 : TForm2;
f: file of TDane;

const
FileName = 'c:\dane.dat';

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.Button2Click(Sender: TObject);
begin
Close;
end;

procedure TForm2.Button1Click(Sender: TObject);
var
StrucRec : TDane;
begin
AssignFile(f, FileName);
Reset(f);
Seek(f, FileSize(f)); // przesunięcie na koniec pliku
StrucRec.nazwa := edit1.Text;
StrucRec.tel_kom := edit2.Text;
StrucRec.tel_stac := edit3.Text;
StrucRec.email := edit4.Text;
Write(f, StrucRec); //zapisanie rekordu do pliku
CloseFile(f);
edit1.Clear;
edit2.Clear;
edit3.Clear;
edit4.Clear;
FormCreate(Sender); //wywołanie procedury onCreate

end;

procedure TForm2.FormCreate(Sender: TObject);
var
StrucRec : TDane;
i : Integer;
begin
AssignFile(f, FileName);
Reset(f);
{petla wykonywana jest tyle ile jest rekordow}
for i:=0 to FileSize(f)-1 do
begin
Read(f, StrucRec); //po kolei odczytanie kolejnego z rekordów;

end;
CloseFile(f); //zamknięcie pliku

end;

end.

Jak zrobić aby te dane były wyświetlane w odpowiedniej kolumnie (nazwa, telefon kom. itd)

0

Styl vsreport.

0
Caption, SubItems.Add();
  • o to chodzi?
0

Mam w ListView na Form1 4 kolumny: nazwa, telefon kom., telefon stac. oraz adres email. Oraz przycisk dodaj.
Po kliknięciu na przycisk dodaj otwiera mi się nowe okno z 4 polami edycji w których wpisuję te dane czyli jakieś imię i nazwisko, telefon kom, telefon stacjonarny oraz jakiś tam email. I teraz chcę aby po kliknięciu przycisku dodaj na drugiej formatce (z polami edycji) uzupełniło się okno ListView na pierwszej formatce. Czyli w odpowiedniej kolumnie nazwisko, telefony oraz email.

0
var
    itm : TListItem;
begin
    itm := ListView1.Items.Add;
    itm.Caption := 'string pierwsza kolumna';
    itm.subitems.Add('string druga kolumna');
    itm.subitems.Add('string trzecia kolumna');
    //i tak dalej
end;
0

Dzięki, udało się
[hurra]

Znowu mam problem. Chciałbym móc kasować wiersze w ListView i aby te zmiany zostały zapisane do pliku. :|

Znowu mam problem. Chciałbym móc kasować wiersze w ListView i aby te zmiany zostały zapisane do pliku. :|

Ja tak zrobiłem: ListView.DeleteSelected

Wiersz się kasuje tylko zmiana w pliku nie następuje :-/

0

Wiersz się kasuje tylko zmiana w pliku nie następuje :-/

A czy to cię dziwi? To chyba logiczne, że zmiany dokonują się tylko w pamięci, a żeby je zapisać, trzeba powtórnie zapisać całość do pliku.

No i właśnie prosze o pomoc.

W takim razie, raczyłbyś spojrzeć na przycisk "szukaj", po czym zrobić z niego użytek... Problem był poruszany naprawdę wiele razy.

0

No i właśnie prosze o pomoc.

0

No to chyba są 3 mozliwosci:
1.Przepisujesz za każdym razem wszstko od nowa co ma sens jesli danych jest mało lub
2. Skorzystasz z jakiejs bazy danych który zrobi to za Ciebie (ludzie chwalą Mysqla), no ale to wymaga zapoznania sie z dosc dużą "machiną", lub
3. Napiszesz sobie wlasną(e) klasę(y) w postaci najlepiej jak najogólniejszej, żeby juz to miec dla każdego następnego programu.

Moim skromnym zdaniem rozwiązanie 3 jest najlepsze bo masz coś wlasnego + satysfakcję ;))

0

odpadam :), ja i delphi to nie najlebszy związek

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