Hmmm...
Imao sam isti problem i na srecu uspesno sam ga resio, napravio sam pomocni prozor koji se otvara kad se kod unosa fakture u pritisne edit button (ono dugme sa [...] na sebi, ButtonStyle property za Column Sifra i Column Naziv mora da bude cbsEllipsis da bi se dugme prikazivalo u DBGrid-u.
Prilozena je arhiva sa FormPrArtikal.dfm i FormPrArtikal.pas fajlovima. Koristi se tako sto se dodeli event za DBgrid-TDbGrid.OnEditButtonClick i onda ide sledeci kod
Code:
procedure TFormFaktura.DbgEditButtonClick(Sender: TObject);
var
I: Integer;
begin
for I := 0 to DBG.ControlCount - 1 do
if DBG.Controls[I].ClassName = 'TDBGridInplaceEdit' then
begin
FormPrArtikal.Top := Dbg.ClientOrigin.Y + DBG.Controls[I].Top;
FormPrArtikal.Left := Dbg.ClientOrigin.X;
FormPrArtikal.EdSifra.Clear;
FormPrArtikal.EdNaziv.Clear;
if FormPrArtikal.Lst.Items.Count > 0 then
FormPrArtikal.Lst.ItemIndex := 0;
FormPrArtikal.ShowModal;
if FormPrArtikal.EdSifra.Text <> '' then
begin
Artikli.Active := True;
Artikli.Locate('Sifra', FormPrArtikal.EdSifra.Text, []);
Dok.Edit;
DokSifra.AsString := D.ArtikliSifra.AsString;
DokNaziv.AsString := D.ArtikliNaziv.AsString;
Dok.Post;
Artikli.Active := False;
end;
end;
end;
Vodi racuna da se kod mene forma zove FormFaktura, DBgrid se zove Dbg, a Dok i Artikli su tabele sa stavkama fakture(Dok) i siframa i nazivima artikala (Artikli).
I u OnShow event forme treba dodati sledeci kod (sluzi za punjenje liste u FormPrArtikal sa podacima o siframa i nazivima artikala)
Code:
procedure TFormFaktura.FormShow(Sender: TObject);
var
TmpLstItem: TListItem;
begin
//Pripremi listu artikala
FormPrArtikal.Lst.Clear;
Artikli.Active := True;
while not Artikli.Eof do
begin
TmpLstItem := FormPrArtikal.Lst.Items.Add;
TmpLstItem.Caption := ArtikliSifra.AsString;
TmpLstItem.SubItems.Add(ArtikliNaziv.AsString);
Artikli.Next;
end;
Artikli.Active := False;
end;
I to je to.