Hogyan működik az adatokat (pointer) a komponens treeview
Hogyan működik adat (Pointer) a komponens TreeView?
eljárás TreeView_OnDeletion (Sender: TObject; Csomópont: TTreeNode)
kezdődik
# XA0; StrDispose (Node.Data);
Kicsit kísérleteztünk egy aktuális, hogy ebben a szellemben. De nem szántani.
Nézd, ez nem így van.
eljárás TForm1.Button1Click (Sender: TObject);
kezdődik
# XA0; form1.TreeView1.Items.Add (nulla, edit1.Text);
végén;
eljárás TForm1.Button2Click (Sender: TObject);
kezdődik
# XA0; form1.TreeView1.Items.AddChild (form1.TreeView1.Selected, "dokumentum");
# XA0; form1.TreeView1.Items [2] .data: = strnew ( "C: \\ 1.txt");
végén;
eljárás TForm1.TreeView1Click (Sender: TObject);
kezdődik
# XA0; shellapi.ShellExecute (application.Handle, "nyitott", form1.TreeView1.Items [1] .data, nulla, nulla, sw_show);
végén;
Tételek, amelyek értéke indexelés kezdődik? # XA0; :)
Általános megfontolások a kód: a kód teljes volt, de. # XA0; sajnálom.
> Jelölő db értékkel kezdődik? # XA0; :)
Értem. Az én hibám :) indexelés a semmiből.
> Általános szempontok a kód: a kód teljes volt, de
De nem értem, magamnak egy kis munka az ingatlan technológia (vagyis az adat). Kérem, mondja meg, hogyan kell használni, hogy működjön rendesen?
lehet, a so-so?
Csomópont: = TreeView1.Items.AddChild (TreeView1.Selected, "dokumentum");
Node.Data:=strnew("C:\\1.txt „);
még jó, hogy ellenőrizze TreeView1.Selected nulla volt, ha a gombot nem kifejezetten tilos
> De nem értem, egy kicsit a technológiai munkát ezzel
> Property (vagyis az adat). Kérem, mondja meg, hogyan kell használni
> Megfelelően működik?
De hogyan működik. Adat - ez csak egy mutató. Jelezheti, hogy mit akar. A tárgy, hogy a vonal a szerkezete, stb
Work - létrehozni „valamit”, hogy egy mutatót ez a „valami”, hogy kiegyenlíti az ingatlan Data index, miután szükségtelenné válik - távolítsuk el a „valami”.
Találtam hibáikból, megjavítani, és működött.
eljárás TForm1.Button1Click (Sender: TObject);
kezdődik
# XA0; form1.TreeView1.Items.Add (nulla, edit1.Text);
végén;
eljárás TForm1.Button2Click (Sender: TObject);
kezdődik
# XA0; form1.TreeView1.Items.AddChild (form1.TreeView1.Selected, "dokumentum");
# XA0; form1.TreeView1.Items [0] .data: = strnew ( "C: \\ 1.txt");
végén;
eljárás TForm1.Button3Click (Sender: TObject);
kezdődik
# XA0; shellapi.ShellExecute (application.Handle, "nyitott", form1.TreeView1.Items [0] .data, nulla, nulla, sw_show);
végén;
Csak most nem értem, hogyan ez az egész egy fájlba, majd töltse fel a további munkához.
Használhatja az áramlás?
> Lehet használni az áramlás?
És tud folyni. És még szüksége van.
Rájöttem, mind az adatok tárolása csomópontok és azok adatait értékeket egy külön fájlban. Úgy tűnik, hogy működik.
var
FS: TFileStream; // hírcsatorna
SL: TStringList; # XA0; // stringlist letölteni
i: integer; # XA0; # XA0; # XA0; # XA0; // futtatni a hurok
kezdődik
FS: = TFileStream.Create ( "c: \ proverka.dat", fmCreate); // létre.
SL: = TStringList.Create; // a.
megpróbál
# XA0; TreeView1.SaveToStream (FS); # XA0; // végigmenni a teljes listát és ha a fájlban
# XA0; i: = 0 treeview1.Items.Count - 1 do
# XA0; # XA0; SL.Add (PChar (treeview1.Items [i] .data)); // érték beállítható tulajdonságokat csomópontot.
# XA0; SL.SaveToStream (FS);
végül
# XA0; SL.Free; # XA0; // bezárja.
# XA0; FS.Free;
végén;
Ha a fa viszonylag kicsi, akkor jön le
> Ha a fa viszonylag kicsi, akkor jön le
Azt tervezzük, hogy a fa körülbelül 500 bejegyzés.
Ui Szergej, nem tudok rájönni a fordított eljárás - azaz betöltve vissza a fa tárolt értékeket egy fájlba :(
Kérem, mondja meg, hogy hol ásni tovább?
Nem értem. Srácok, akkor részletesen?
Vegye mindenütt Form1 nafig eseménykezelők, míg a rúgások nem csapott:
eljárás TForm1.Button1Click (Sender: TObject);
kezdődik
TreeView1.Items.Add (nulla, edit1.Text);
végén;
eljárás TForm1.Button2Click (Sender: TObject);
kezdődik
TreeView1.Items.AddChild (form1.TreeView1.Selected, "dokumentum");
TreeView1.Items [0] .data: = strnew ( "C: \\ 1.txt");
en
Mi nem világos?
Feltöltöttem stringlist és futtatja rajta egy hurok, olvasni az i-edik sor, hogy egy másolat (StrNew) és hozzárendelése egy mutató a copy-szám kötelező adat i-edik eleme az ugyanazon a fán.
> Mi nem világos?
>
> Letöltés stringlist és futtatja rajta egy hurok, olvasás az i-edik
> String, a másolás (StrNew), és hozzárendel egy mutatót
> Egy példányát St-woo adatok i-edik eleme az ugyanazon a fán.
Próbáltam úgy, de valami nincs rendben. A treeview lesz mindkettő, és mindez tömegben.
eljárás TForm1.Button2Click (Sender: TObject);
var
s: string;
pStr: PChar;
FS: TFileStream;
kezdődik
FS: = TFileStream.Create ( "c: \ proverka.dat", fmOpenRead);
SL: = TStringList.Create; // stringlist
megpróbál
treeview1.LoadFromStream (FS);
SL.LoadFromStream (FS);
i: = 0 SL.Count-1 do // fut egy hurok.
treeview1.Items [0] .data: = StrNew (PChar (SL [i]));
végül
SL.Free;
FS.Free;
végén;
Kedves Mester, kérem, mondja meg, hol van a hiba?
Tisztelettel
és nem tudja használni 0, és használja a változó?
Egy kell
vetka1
vetka2
Amennyiben rákattint a csomópontok a stringváltozó megjelenítendő adatok tulajdon, azaz az én például azt
date1
Date2
hiba a fenti kódot megadni.
mi van valójában az igazi kódot - senki nem fog kitalálni
Nos, én még egyszer minden megváltozott. Ahelyett, hogy a 0 azt jelenti változó, azaz, én
eljárás TForm1.Button2Click (Sender: TObject);
var
s: string;
pStr: PChar;
FS: TFileStream;
kezdődik
FS: = TFileStream.Create ( "c: \ proverka.dat", fmOpenRead);
SL: = TStringList.Create; // stringlist
megpróbál
treeview1.LoadFromStream (FS);
SL.LoadFromStream (FS);
i: = 0 SL.Count-1 do // fut egy hurok.
treeview1.Items [0] .data: = StrNew (PChar (SL [i]));
végül
SL.Free;
FS.Free;
végén;
De az eredmény nem az, amit szeretnénk. (
eljárás TForm1.Button2Click (Sender: TObject);
var
s: string;
pStr: PChar;
FS: TFileStream;
kezdődik
FS: = TFileStream.Create ( "c: \ proverka.dat", fmOpenRead);
SL: = TStringList.Create; // stringlist
megpróbál
treeview1.LoadFromStream (FS);
SL.LoadFromStream (FS);
i: = 0 SL.Count-1 do // fut egy hurok.
treeview1.Items [i] .data: = StrNew (PChar (SL [i]));
végül
SL.Free;
FS.Free;
végén;
Te nem nekem szem előtt tartva, te vagy a forrás módosítása a
treeview1.Items [i] .data: = StrNew (PChar (SL [i]));
Nos zashib. megváltozott.
letölteni.
Most jobb kijelző kódja
> Most jobb kijelző kódja
Ennyi, és kérjen.
Hogyan?
körülbelül ugyanaz, mint a boot-kód
Ez nem éri el. Masters mondd kérlek!
Te tényleg hülye vagy úgy tesz, mintha?
ugyanezt mondta
> Hozzárendelése mutatót egy példányát St-woo adatok i-edik eleme az
> fa
> Aludj feküdni
Ez azt jelenti, hogy én vagyok gyáva!
Nem megyek aludni, amíg én nem értem. Azért választottam ezt - ezért kell, hogy az utolsó!
Dolgozom ezen a projekten, félig dig most zavaros, és nem tudom, hogyan lehet kijutni, hol kell keresni a kiutat belőle.
A kód, csak egy pár sort, és egy kezdő, hogy nem mindig könnyű megtalálni és kijavítani a hibát. Gondoljunk csak bele. Azt tapasztalja, és megfordult, hogy a segítséget és tanácsot helyett hallgatni itt mindenki jobban tudja, mint bárki delphi. Ez szégyen tényleg!
Szergej, írtam minden, ahogy tanácsolta és csakúgy, mint gondolnánk.
var
s: string;
pStr: PChar;
FS: TFileStream;
kezdődik
FS: = TFileStream.Create ( "c: \ proverka.dat", fmOpenRead);
SL: = TStringList.Create; // stringlist
megpróbál
treeview1.LoadFromStream (FS);
SL.LoadFromStream (FS);
i: = 0 SL.Count-1 do // fut egy hurok.
treeview1.Items [i] .data: = StrNew (PChar (SL [i]));
végül
SL.Free;
FS.Free;
TreeView kitölti az egész fájl tartalmát, azaz a A csomópont nevét és értékeit ingatlan adatai Plus.
Nézzük újra.
i: = 0 SL.Count-1 do // egy ciklusban kezdve az első elem fut egész stringlistu.
treeview1.Items [i] .data: = StrNew (PChar (SL [i])); // itt töltse az alkatrész értékek és a hozzá adattulajdonsággá a csomópontokat.
Azt mondják, hogy van egy hiba a kódot. Egyetértek, én nem vitatkozom, mert az eredmény ugyanaz. Akkor mi a hiba, vagy valami hiányzik a kódot?
kivéve loading kód is megjelenik a kód. Itt senki sem látta.
> Van egy kijelző kódja
Azt már tudtam, az oszlopok felett.
Kérjük jelezze nekem mi a végrehajtása ezt a kódot.
Hol kezdjem, hol kell keresni, és mit kell építeni.
végrehajtás helyesnek kell lennie.
megtanulják az alapokat a programmiovaniya.
támaszkodnak a segítséget.
> Végrehajtás megfelelőnek kell lennie.
> Ismerje meg az alapokat programmiovaniya.
> Támaszkodhat HELP.
> Végrehajtás megfelelőnek kell lennie.
> Ismerje meg az alapokat programmiovaniya.
> Támaszkodhat HELP.
Nos, akkor mászni a génállomány, és hol a tényleges sorrendben bejárása facsomópontok ahogy tárolva vannak:
eljárás TTreeStrings.SaveTreeToStream (Stream: TStream);
..
kezdődik
..
# XA0; # XA0; anód: = tulajdonos [0]; // egyenértékű TreeView.Items.GetFirstNode
# XA0; # XA0, míg az anód <> nulla do
# XA0; # XA0; kezdődik
.
# XA0; # XA0; # XA0; anód: = ANode.GetNext;
# XA0; # XA0; end;
# XA0; end;
végén;
Ebből következik, hogy ha a CB-Data a csomópontok elősegítése érdekében megfelelő visszanyerését, meg kell ragaszkodni, hogy csak ilyen elkerülő eljárást.
Memória: 0,81 MB
Idő: 0.054 c