Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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]

Předmět Autor Datum
Po kliknuti na polozku listboxu si najdes prislusny zaznam v souboru Evidence.DAT (podobne, jako jsi…
Jan Fiala 05.06.2006 20:36
Jan Fiala
jo jenže to je ůkol do školy a máme to udělat takto
Pepanovas 05.06.2006 21:07
Pepanovas
A co ti v tom brani ? Ukoly za tebe psat nebudu, ale pokud budes mit opravdu nejaky konkretni proble…
Jan Fiala 05.06.2006 21:21
Jan Fiala
no to je ten konkrétní problém,já mám za úkol udělat evidenci videokazet kde bude název,žánr,cena,da…
Pepanovas 05.06.2006 23:09
Pepanovas
Pokud dovedes udaje ulozit do souboru, pak nevidim zadny problem, abys je umel z toho souboru zase n…
Jan Fiala 05.06.2006 23:25
Jan Fiala
Predpokladam ze pre tento ucel by sa moholo vytvorit nieco ako Videokazeta=record a tam dat vsetky p…
Andrej 06.06.2006 00:29
Andrej
Ahoj, po kliknutí zobrazily podrobnější informace ? Neptáš se jen na něco takéhleho: //form2 uveden…
AZOR 06.06.2006 00:35
AZOR
Pokial ide o pracu s viacerimi formularmi tak tu sa o tom nieco pise: http://zive.cz/h/Programovani/…
Andrej 06.06.2006 00:53
Andrej
Na otevreni noveho okna si vytvor novy formular za behu aplikace , pro potrebne componenty pak prira…
virus 06.06.2006 14:00
virus
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.…
Pepanovas 06.06.2006 21:00
Pepanovas
Takze to napisu jeste jednou a uz naposledy Po kliknuti na polozku ListBoxu si musis otevrit soubor,…
Jan Fiala 06.06.2006 21:46
Jan Fiala
Moc dík:-):-):-) poslední
Pepanovas 06.06.2006 22:26
Pepanovas

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...

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

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 !!)

 begin
    Select := TForm.Create(Videokazety);
    with Select do
      begin
        Top := 0;
        Left := 0;
        Width := 1024;
        Height := 160;
        Name := 'Videokazety';
        Caption := Videokazety';
        Onclose:=form8.Onclose;
        Show;
      end;
  end;

pro vytvoreni komponenty (jakekoliv ve formulari videokazety)

listbox:=Tlistbox.create(Select);
listbox.Parent:= Select;

 with listbox do
    begin
         Left := 0;
          Top := 0;
          Width := 250;
          Height := 140;
          Name := 'zaznam';
          enabled:=true;
          visible:=true;
          show;
    end;
end;

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 8-)

OpenDirectory dialog (zakusek) :-D
do klausuli pridej >>ShellAPI, ShlObj<<

// pro vyhledavani adresare

function ProhledejDialogNavrat(Wnd: HWND; uMsg: UINT; lParam, lpData: LPARAM):
  integer stdcall;
var
  wa, rect : TRect;
  dialogPT : TPoint;
begin
  if uMsg = BFFM_INITIALIZED then
  begin
    wa := Screen.WorkAreaRect;
    GetWindowRect(Wnd, Rect);
    dialogPT.X := ((wa.Right-wa.Left) div 2) -
                  ((rect.Right-rect.Left) div 2);
    dialogPT.Y := ((wa.Bottom-wa.Top) div 2) -
                  ((rect.Bottom-rect.Top) div 2);
    MoveWindow(Wnd,
               dialogPT.X,
               dialogPT.Y,
               Rect.Right - Rect.Left,
               Rect.Bottom - Rect.Top,
               True);
  end;

  Result := 0;
end;

function ProhledejDialog(const Nazev: string; const Flag: integer): string;
var
  lpItemID : PItemIDList;
  BrowseInfo : TBrowseInfo;
  DisplayName : array[0..max_path] of char;
  TempPath : array[0..max_path] of char;
begin
  Result:='';
  FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
  with BrowseInfo do begin
    hwndOwner := Application.Handle;
    pszDisplayName := @DisplayName;
    lpszTitle := PChar(Nazev);
    ulFlags := Flag;
    lpfn := ProhledejDialogNavrat;
  end;
  lpItemID := SHBrowseForFolder(BrowseInfo);
  if lpItemId <> nil then begin
    SHGetPathFromIDList(lpItemID, TempPath);
    Result := TempPath;
    GlobalFreePtr(lpItemID);
  end;
end;

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)

Form.EditJmeno.Text := Kazeta.Jmeno;
Form.EditAutor.Text := Kazeta.Autor;
...

Zpět do poradny Odpovědět na původní otázku Nahoru