Delphi - otevření položky listboxu v novém okně
Potřeboval bych pomoct mám udělat program na evidenci videokazet a nevím jak udělat to,aby když v listboxu mám více načtených položek ze souboru evidence.dat,tak aby po kliknutí na některou z položek se otevřelo nové okno s dalšími údaji(cena za půjčení,žánr,evidenční číslo atd).Prosím o radu a vysvětlení.Děkuji
[mod]upraven titulek dotazu - původně "Delphi" (host)[/mod]
Po kliknuti na polozku listboxu si najdes prislusny zaznam v souboru Evidence.DAT (podobne, jako jsi timto souborem plnil listbox)
Pak si zobrazis formular
Jednotlivymi polozkami z nalezeneho zaznamu naplnis sve edity
Tohle je prace pro databazove tabulky. Pomoci databaze by sis usetril spoustu starosti...
jo jenže to je ůkol do školy a máme to udělat takto
A co ti v tom brani ?
Ukoly za tebe psat nebudu, ale pokud budes mit opravdu nejaky konkretni problem s tim ukolem, rad ti s tim pomuzu.
no to je ten konkrétní problém,já mám za úkol udělat evidenci videokazet kde bude název,žánr,cena,datum odevzdání evidenční číslo videokazety.Tyto hodnoty se zadají do formuláře,z tama se to uloží do souboru .dat z pak se mě název zobrazí v listboxu.Jenže pak nevím jak dál abych to mohl udělt tak jak jsem posisoval výše.Jinak další úkoli jako je vyřazení údaje z evidence a tak mám,potřebuji jenom toto aby se mě zobrazili ty detaily o dané kazetě.S tím si fakt nevím rady.
Pokud dovedes udaje ulozit do souboru, pak nevidim zadny problem, abys je umel z toho souboru zase nacist. Vzdyt je to jen naplneni promenne z Editu nebo naplneni Editu z promene!
Znas nazev v listboxu, takze si soubor otevres, projdes jej od zacatku do konce a budes hledat kazetu podle nazvu (nestastne reseni, ale budiz). Jakmile ji najdes, tak nacitani prerusis a zobrazis udaje ve formulari.
Co se tyka vyrazeni, musis do noveho souboru zkopirovat vsechny radky krome toho, ktery vyrazujes. Da se to udelat inteligentneji - podobne jako to delaji databaze - pouze oznacis zaznam jako zruseny (nejaka Boolean indikace).
Vyhody - nemusis to presypavat kvuli mazani do noveho souboru. To muzes udelat na pozadani treba jako "udrzba souboru"
Nevyhody - musis s tim pocitat pri nacitani seznamu - takto oznacene zaznamy preskocis
Predpokladam ze pre tento ucel by sa moholo vytvorit nieco ako Videokazeta=record a tam dat vsetky potrebne udaje. Nasledne to ukladat do typoveho suboru pre zjednodusenie nacitavania a ukladania udajov.
Ahoj,
po kliknutí zobrazily podrobnější informace ?
Neptáš se jen na něco takéhleho:
//form2 uvedeno v uses
Form2.show;
Form2.edit1.text:=Zaznamy[Listbox 1.ItemIndex].nazev;
Pokial ide o pracu s viacerimi formularmi tak tu sa o tom nieco pise:
http://zive.cz/h/Programovani/AR.asp?ARI=118197&CAI =2091
http://zive.cz/h/Programovani/AR.asp?ARI=118444&CAI =2091
Na otevreni noveho okna si vytvor novy formular za behu aplikace , pro potrebne componenty pak prirad ownera , napriklad (je toho spousta na webu staci hledat !!)
pro vytvoreni komponenty (jakekoliv ve formulari videokazety)
Na dalsi uz prijdes sam jen malinko napomuzu , pro editaci v novem okne musis v materskem formulari pridat vlastni funkci ktera se ti postara o ukladani a podobnych veci stejny zpusob je se vsim , jde to udelat i jako sadu
listbox:array [1..2] of Tlistbox; a podobne
OpenDirectory dialog (zakusek)
do klausuli pridej >>ShellAPI, ShlObj<<
Jo díky za rady,ale my v delphi děláme teprve tři měsíce a máme 2 hodiny týdně.A to ještě 2 odpadlo.Takže vašim postupům moc merozumím.Já mám udělané videokazety = record,uložené položky,ale když chci zobrazit nějakou položku(jo položky bude možné přidávat a mazat)tak já udělám to načtení do jednotlivých editů,jenže když program spustím tak ať kliknu na jakoukoliv položku,vždy se mě zobrazí údaje první položky v listboxu.ato bych onkrétně potřeboval nějak ošetřit tak,aby tomu porozuměl úplný začátečník.My jsme dělali v Delphi zatám programy typu kalkulačka,spočítat průměr a několika hodnot z nihž některé jsou povolit,jiné zakázat a pak jeden ukázkový příklad na ten xxx = record,ale tam jsme načítali tu položku pouze jako seznam do listboxu.
Takze to napisu jeste jednou a uz naposledy
Po kliknuti na polozku ListBoxu si musis otevrit soubor, ve kterem mas ulozeny zaznamy, musis si najit prislusnou vetu a do promenne typu toho tveho Recordu nacist pomoci Read() vetu ze souboru. Pak z obsah toho recordu preneses do promennych na formulari:
predpokladejme, ze Kazeta: TKazeta; (record)
Moc dík