[delphi] - opslaan van items in een Tlistview .

Pagina: 1
Acties:

  • MisterE
  • Registratie: April 2002
  • Laatst online: 28-08 19:15
ik heb een record met informatie.
In een TListview word een item gekozen, ik kijk naar de 'Data' voor het juiste adres (weet niet goed hoe ik het met woorden moet uitleggen, iig met pointers)

Wel, dit werkt allemaal prima, maar nou wil ik hem uitbreiden met een TreeView zodat het meer als een directory structuur lijkt. Nou hebben die nodes ook de mogelijkheid om pointers op te slaan dus dat is het probleem niet.

Ik zou eigenlijk graag willen weten hoe je die dat opslaat op HD. voor de Tlistview maak ik gewoon een 'file of Record' en dan sla ik die data op, maar hoe moet ik dat oplossen als ik ook nog een Tlistview heb.

Nou is het misschien moeilijk uit te leggen via tekst, en ik heb wel een klein werkend voorbeeld (zonder het ListView) gedeelte, dus als je me kan/wil helpen zend me dan ff een mailtje en dan stuur ik een voorbeeld.
Hoop dat mijn vraag duidelijk is, of iemand bekend voorkomt

MisterE2002@zonnet.nl

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 13:23

Tomatoman

Fulltime prutser

Welke informatie wil je precies opslaan? Begrijp ik het goed dat je de complete tree wilt opslaan met voor iedere node
1) de string;
2) bepaalde gegevens waar je met met de Data property van een node naar verwijst?

Het is hierbij van belang in wat voor bestandsformaat je de zaak wilt gieten. Je zou kunnen overwegen alle gegevens te streamen naar een binair bestand. Dat valt niet te lezen met een ander programma zoals een tekstverwerker, maar wel met je eigen applicatie.

Geef wat meer informatie, dan krijg je misschien het antwoord dat je zoekt. :)

Een goede grap mag vrienden kosten.


  • MisterE
  • Registratie: April 2002
  • Laatst online: 28-08 19:15
wel ik heb bestanden, en ik sla dus instellingen op per bestand.
Wat ik nu heb is gewoon een Listview waar je bestanden aan kan toevoegen.
Wat ik wil is een treeview en een listview. Dat je gewoon zeg maar een directory selecteerd en dat ie die allemaal toevoegd, en allemaal pointers maakt die dus de adressen bevatten van de records.

Dus zoiets als dit:
PMP3 = ^TMP3;

TMP3 = Record
FilePath : ShortString;
FileDescription : ShortString;
end;

Dan hebben we een globale variabele -> p : PMP3;

Als er dus een item toegevoegd word:


begin
New(p);
FillChar(p^, SizeOf(p^), #0);

p^.FilePath := OpenDialog1.Files[i];
p^.FileDescription := ExtractFileName (OpenDialog1.Files[i]);


with ListView1 do
begin
ListItem := Items.Add;
ListItem.Data := p;

ListItem.Caption := p^.FileDescription;
end;


end;

Zoals ik zei heb wel een werkend voorbeeld, voor de liefhebber ;)

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 13:23

Tomatoman

Fulltime prutser

Oplossing 1
Schrijf een descendant van TTreeView (noem het TFileTreeView of zo) en gebruik deze in plaats van de gewone TTreeView. Bij de TFileTreeView moet je dan zelf het streaming mechanisme aanpassen. Vervolgens kun je de inhoud van de tree view met bijvoorbeeld ObjectTextToBinary naar een bestand streamen. Voor het streamen zul je DefineProperties moeten aanpassen - zie dat onderwerp in Delphi Help.

Oplossing 2
Kijk eens of [url="http://www.delphi-gems.com/VirtualTreeview"]TVirtualTreeView[/url] kan wat je zoekt.

Een goede grap mag vrienden kosten.


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Of maak een functie die het gewoon opslaat in een bestand. Om de boom structuur te bewaren zal je die ook op moeten slaan. Door bijvoorbeeld bij te houden per node wat zn ouder is.

We adore chaos because we like to restore order - M.C. Escher