Forum Delphi.cz

Delphi => Obecné => Téma založeno: Stanislav Hruška 08-02-2019, 11:12:14

Název: VirtualStringTree - pridanie uzla do výberu
Přispěvatel: Stanislav Hruška 08-02-2019, 11:12:14
Podľa návodu si nie som istý či postačuje opakovane použiť
Kód: Delphi [Vybrat]
  1.  TBaseVirtualTree.Selected[MyNode] := True
a všetky uzly budú vo výbere, alebo musím použiť
Kód: Delphi [Vybrat]
  1. TBaseVirtualTree.AddToSelection(MyNode)
Název: Re:VirtualStringTree - pridanie uzla do výberu
Přispěvatel: Delfin 08-02-2019, 11:41:13
Pro vyber vsech uzlu pouzij metodu SelectAll. Pro vyber specifickych pak radeji property Selected, protoze jeji setter zohlednuje i vyber sloupcu.
Název: Re:VirtualStringTree - pridanie uzla do výberu
Přispěvatel: Stanislav Hruška 08-02-2019, 13:02:22
Ďakujem. V tomto prípade stĺpce nemám.
Název: Re:VirtualStringTree - pridanie uzla do výberu
Přispěvatel: Delfin 08-02-2019, 17:51:39
Nevim, jdes si asi svou cestou. Nicmene v uvodu jsi napsal "nie som istý či postačuje opakovane použiť...a všetky uzly budú vo výbere". No pro pripad vyberu vsech vetvi existuje metoda SelectAll. Pro vyber specifickych radeji property Selected (byt prave ted nema Tvuj strom vice sloupcu a neresis jejich vyber; jde o pripadne budouci rozsireni). Zaroven nezapomen, ze pokud budes vybirat jen specificke vetve, je vhodne strom pro upravy uzamknout.
Název: Re:VirtualStringTree - pridanie uzla do výberu
Přispěvatel: Stanislav Hruška 08-02-2019, 19:54:37
Čo riešim. Buď preťahujem uzly z ľavého stromu do pravého, alebo v rámci pravého. V druhom prípade by som mohol použiť Move.
Ale ja tieto zmeny potrebujem zapísať do DB.
Užívateľom vybraný zoznam uzlov nie je problém. Ja si v cykle (vst.AddChilde...) robím zoznam nových uzlov v pravom strome. Ten chcem použiť na ich výmaz pre prípad, ak sa akcia s DB nepodarí. To som doteraz nemal riešené. Síce nepredpokladám, že by sa s DB dobabralo, lebo sa jedná o lokálny Access s jediným prístupom.
Hm, tak sa mi zdá, že si ten presun v rámci stromu musím ešte poriadne rozobrať :)
Ešte prikladám obrázok pre lepšiu predstavu.
Uzly môžem ťahať aj z pravého stromu na ľavý.
Název: Re:VirtualStringTree - pridanie uzla do výberu
Přispěvatel: Stanislav Hruška 08-02-2019, 20:39:58
Hm, asi obrátim garde. Najprv urobím zápis do DB a potom si môžem s uzlami robiť čo chcem. Nebudem museť riešiť návrat späť. Pri presune v rámci jedného stromu by so musel mať dva zoznamy uzlov. To je pre mňa problém.
Název: Re:VirtualStringTree - pridanie uzla do výberu
Přispěvatel: Delfin 09-02-2019, 15:35:57
Hm, asi obrátim garde. Najprv urobím zápis do DB a potom si môžem s uzlami robiť čo chcem. Nebudem museť riešiť návrat späť. Pri presune v rámci jedného stromu by so musel mať dva zoznamy uzlov. To je pre mňa problém.

Aha :) Takze uzivatel presune vybrane vetve, Ty je zkopirujes do jineho stromu a ze zdrojoveho je odstranis. Pak zapises do DB a v pripade selhani je z ciloveho zkopirujes zpet do zdrojoveho (s tim ze je pak pridas do vyberu pomoci AddToSelection) a z ciloveho odstranis. V podstate "rollback drag&drop".

Pokud jsem scenar uhodl, volil bych stejnou cestu. Tedy prvne provedl zapis, a az (a pouze) v pripade uspechu vetve ze zdroje do cile presunul.
Název: Re:VirtualStringTree - pridanie uzla do výberu
Přispěvatel: Stanislav Hruška 09-02-2019, 18:07:34
A ako krásne sa mi vyčistil kód. Dokonca mu aj rozumiem :)
Ale nebyť tej diskusie tu, tak by som na to obrátenie postupu neprišiel. Je to jediné miesto kde si o problémoch môžem pokecať. Keby som mal kancelárii niekoho na pokec, tak by som tu polovicu príspevkov ani nemal. Ani by sa programovaniu nemusel až tak rozumieť.