Dodawanie pozycji do TList

0

Może pytanie wyda się lamerskie ale ja nie programuje w delphi ani w builderze więc muszę oto zapytać bo muszę napiać program w delphi.
A minowicie:
Mam podformę na której są 1 edit i 2 maskedit.Na formie głównej mam
Tlist.I teraz chodzi oto żeby po klknięciu OK dodał do listy nową pozycję
która zawiera treść z edita i maskedit'ów z tej podformy.

Próbowałem na różne sposoby ale nic nie wskurałem.Z góry dziękuje za pomoc.

0
type
PTyp=^TTyp
TTyp=record
String1:String;
String2:String;
end;

var
Lista:TList;

[...]

var
Rec:PTyp;
begin
New(Rec);
Rec^.String1:=Edit1.Text;
Rec^.String2:=Edit2.Text;
Lista.Add(Rec);
0

Wkleiłem kodzik, który został mi dany w odpowiedzi i wszystko ładnie działa tylko że podczas pracy progamu wywala błąd (po naciśnieciu guzika z procedurą).Chodzi oto aby po naciśnięciu guzika z edita na podformie pobierany zostawał tekst który zostaje wklejony do listview który znajduje się na formie głównej ale żeby nie wywalał błędu.Błagam o szybką pomoc. [???]

0

Trochę namotałeś z tym i w końcu nie rozumiem, o co chodzi :). Wydaje mi się, że przyczyną błędu jest to twoje odczytywanie z listview albo jeszcze co innego, ale raczej nie dodawanie do TList. Najlepiej daj kod.

0

Wysałałem Ci na maila kod zobacz, proszę o co tam chodzi :-/

Wielkie dzięki, gdyby nie ty było by kiepsko!! [angel] [browar]

Mam jeszcze jedno pytanie:
Jak teraz to wszystko posegregować w odpowiednie kolumny w Listview
(TListView.column).Przykładaowo mam dwa edity i teraz z jednego chcę wkleić tekst do kolumny np. 'kolumna01' ,a z drugiego do np. 'kolumna02. [stuk]

0

Musisz dać w listview style na vsrepot. Pierwsza kolumna to będzie item.caption, druga - item.subitems[0], trzecia - item.subitems[1], itd.

0

Zrobiłem tak jak napisałeś i podczas działania programu wywala mi błąd:
class EStringListError with message 'List index out of bounds(0).
Co mam z tym zrobić?Strasznie mnie wkurza ten komponent ale cóż zrobić.Help me!!

0

Item dodajesz tak:
ListView.Items.Add('caption tworzonego itemu');
a jak chcesz aby bylo cos w kolumnach obok tego itemu robisz to tak
var
ListItem: TListItem;
begin
ListItem := ListView.Items.Add('caption tworzonego itemu');
ListItem.SubItems.Add('caption subitemu do nastepnej kolumny');
Caption itemu jest wyswietlany w pierwszej kolumnie a captiony jego subitemów wyswietlane są w kolejnych kolumnach. Aby sie odwołać do nazw pierwszej kolumny nalezy napisć:
s1 := ListView.Items[i].Caption; {gdzie i to numer itemu}
a do kolejnych kolumn przez:
s2 := ListView.Items[i].Subitem[0]; {do drugiej kolumny}
s3 := ListView.Items[i].Subitem[1]; {do trzeciej kolumny itd.}
Poprubój i poczytaj troche helpa !!

0

Dzięki ale sposób thenkles'a jest lepszy,za to nie omieszkam wpisać list.subitems.add właśnie oto mi chodziło.No a helpy czytam tyle że jakoś minie pomigły w tym przypadku.Zoaczymy czy Twój subitem.add będzie działał. :-)

Zrobiłęm konstrukcje:
list.Items.Item[mainform.list.Items.Count+1].subitems[0] := rec^.String2;
Ale wywala błąd 'acces volation' O co chodzi?

0

Najwyższy indeks to count-1, a ty prubójesz się odwołać do pozycji nieistniejącej.

0

Kiedy robie count-1 wywala mi błąd opisany wczśniej(listindex of bounds).
A kiedy robie samo count to wywala 'Acces volation'.
Co mam kurde robić?
!!

0

aby kozystac z elementow musisz je najpierw dodac jak pisalem :-[
ListView.Items.Add('cos tam');
To samo dla subitemow.

0

Jakiam cudem ma robić add jeżeli add nie ma żandych parametrów do zdeklarowania?! :d

0

sorki, zapomniałem:

var
  ListItem: TListItem;
begin
  ListItem := ListView.Items.Add;
  ListItem.Caption := ('caption itemu');
  ListItem.SubItems.Add('subitem');
  ...
end;

Zresztą pisałem to już chyba wcześniej

0

No dobra popróbuje ale coś mi się tu nie poodoba :-), ale sprawdzę
Jak nie będzie działać to napiszę.

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