Hirdetés
- Samsung Galaxy Watch6 Classic - tekerd!
- Xiaomi 15 - kicsi telefon nagy energiával
- Sony Xperia 1 V - kizárólag igényeseknek
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Milyen okostelefont vegyek?
- iPhone topik
- Youtube Android alkalmazás alternatívák reklámszűréssel / videók letöltése
- Kézbe fogható paradoxon lett az iPhone Air
- Apple Watch Sport - ez is csak egy okosóra
- Merész dizájn és új teleobjektív az iPhone 17 Pro mobilokban
Aktív témák
-
Alan
aktív tag
Hát, nem biztos, hogy akkora mázli, mert így az első két olvasás után attól tartok, rossz híreim vannak.
A VT működését jól értelmezed, valóban ezért villámgyors, de adatbáziskezeléshez nyers formában nem a legoptimálisabb, mert azon alapul, hogy a memóriában lévő adatstruktúrádból Te magad veszed majd elő neki az adatot (OnGetText) jó gyorsan, így nem kell az adatokat neki még egyszer letárolnia valahol (mint azt a ''klasszikus'' TTreeView teszi). Ha az OnGetText eseménykezelőben Te adatbázishoz fordulsz, akkor akár el is mehetsz vacsorázni közben (ahogyan láttad is).
Azért nem reménytelen a helyzet, de mindenképpen létre kell hoznod valami gyorsítótárat a memóriában, különben használhatatlan lesz a programod. Arra gondoltam, hogy először is definiálsz egy struktúrát, mondjuk egy rekordot, amiben a tulajdonságfa egy csomópontjának adatai teljesen beleférnek (olyasmi lesz ez, mint egy adatbázisrekord). Az első select alapján beállítod a RootNodeCount tulajdonságot, erre elkezdenek áramlani az OnInitNode események. Ezekben a gyökérelemeknél nem csinálsz mást, csak megjegyzed, hogy melyik eredménysorhoz melyik node tartozik, és beállítod, hogy van neki gyermeke, valahogy így:
[CODE]
procedure TLaoCeForm.VSTInitNode(...);
var Data: TLaoCeNodeData;
begin
if ParentNode = nil // ezek a root node-ok
then
InitialStates := InitialStates + [ivsHasChildren]
else begin // ezek meg a subselectek-hez tartozó node-ok lesznek
Data := Sender.GetNodeData(Node);
{itt kitöltöd a cuccaiddal az adatstruktúrát}
end;
end;
[/CODE]
Ezek után az a lényeg, hogy az OnInitChildren eseménykezelőben lefuttathatsz egy-egy subselect-et az aktuális node-hoz eltárolt paraméter alapján, és beállíthatod, hogy hány eredménysora van (erre megint beindulnak az OnInitNode-ok, de már a gyermekelemekre), a többit meg elintézed a fenti OnInitNode eseménykezelőben. Az általam TLaoCeNodeData-nak nevezett struktúrát tehát jól találd ki.
Ezzel a megoldással megúszod a teljes adatbázis letárolását a memóriában, de a jó teljesítményhez annyit muszáj megtenned, hogy a képernyőn látható (a megnyitott node-okhoz tartozó) adatok a memóriában legyenek.
Bedobhatsz egy olyan trükköt is, hogy egyszerre csak egy root node-ot lehessen lenyitni, a második lenyitásakor a korábban már lenyitottat felcsukod, így a hozzá tartozó gyermekelemeknek a memóriáját (TLaoCeNodeData csomagjait) klasszul újra felhasználhatod az aktuálisan lenyitott node-hoz.
Végső soron tény, hogy nem kifejezetten DataSet típusú működéshez találták ki ezt a komponenst - de annál szebb a kihívás, nemde? :)
(Ha nagyon sz**sz vele, tudok küldeni kisebb példakódokat, de szerintem ez alapján már minden OK lesz.)
Aktív témák
- Samsung Galaxy Watch6 Classic - tekerd!
- Azonnali fáradt gőzös kérdések órája
- Napelem
- Steam, GOG, Epic Store, Humble Store, Xbox PC Game Pass, Origin Access, uPlay+, Apple Arcade felhasználók barátságos izgulós topikja
- OLED TV topic
- Nintendo Switch 2
- Eredeti játékok OFF topik
- Sokat megélt veterán CPU-t hoz vissza a piacra az Intel
- Xiaomi 15 - kicsi telefon nagy energiával
- Külső merevlemezek - USB, eSATA, FireWire HDD
- További aktív témák...
- Egyben 30k! Videókártyák, ram-ok, cpu-k, gépházak, alaplapok stbstb
- BESZÁMÍTÁS! ASRock B650M R7 7700 32GB DDR5 1TB SSD RX 9070 XT 16GB be quiet! Pure Base 500 FX 750W
- BESZÁMÍTÁS! ASRock B650M R5 7500F 32GB DDR5 1TB SSD RTX 3080 10GB Kolink Observatory RGB A-Data 750W
- BESZÁMÍTÁS! Gigabyte H110M i5 6500 8GB DDR4 240GB SSD GTX 1050Ti 4GB AeroCool V3X Green nBase 600W
- BESZÁMÍTÁS! Asus A620M R5 7600X 32GB DDR5 1TB SSD RTX 3080 10GB Zalman M4 A-Data 750W
- Huawei FreeBuds Pro 3 // Számla + Garancia //
- Telefon szerviz helyben - Gyors javítás, akár 30 perc alatt!
- Surface Laptop 4 i7-1185G7 16GB 256GB
- Bezámítás! Gigabyte G5 KC Gamer notebook - i5 10500H 16GB DDR4 512GB SSD RTX 3060 6GB WIN10
- LG 55C4 - 48" OLED evo - 4K 144Hz - 0.1ms - NVIDIA G-Sync - FreeSync - HDMI 2.1 - A9 Gen7 CPU
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest