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]

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Na otevreni noveho okna si vytvor novy formular za behu aplikace , pro potrebne componenty pak prira… nový
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.… nový
Pepanovas 06.06.2006 21:00
Pepanovas
Takze to napisu jeste jednou a uz naposledy Po kliknuti na polozku ListBoxu si musis otevrit soubor,… nový
Jan Fiala 06.06.2006 21:46
Jan Fiala
Moc dík:-):-):-) poslední
Pepanovas 06.06.2006 22:26
Pepanovas

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