DBf i pobieranie wartości pól rekordu do edita

0

Witam!
Ręce już mi opadają to zdecydowałem się tu napisać. :<
Piszę książkę adresową z zapisem do bazy lokalnej. Używam TDBf, TDataSoruce, TDBGrid. Chciałbym zrobić edycje rekordów i tak to widzę:
W głównym oknie przy DBGrid jest Button Edytuj, który otwiera nowe okno. Nowe okno posiada Edity odwzorowujące kolumny w DBGrid'zie. Chciałbym, żeby te nowe okno było wypełnione wartościami wiersza, który jest aktualnie aktywny(fokus DBGird). Stąd pytania:

  1. Jak pobrać wartości aktywnego wiersza?
    Form2.Imie.Caption:=Form1.Baza.?
    Wyobrażam sobie to mniej więcej tak:
    Form2.Imie.Caption:=Form1.Baza.ReturnValue(Form1.DBGrid1.Focus).Imie;

  2. Dodawanie do tabeli zrobiłem za pomocą:
    Insert; FieldByName('Imie').asString:=Form2.Imie.Caption;
    Jaką procedurą uda mi się edytować istniejące rekordy?
    Coś znalazłem o tym, żeby zamiast Insert wpisać Editi też zastosować FieldByName, ale skąd ten czarodziejski Lazarus miałby wiedzieć który rekord edytować?

2
Jojek01 napisał(a):
  1. Jak pobrać wartości aktywnego wiersza?

zawsze pobierane są dane z aktywnego wiersza:

Form2.Imie.Caption:=Form1.Baza.FieldByName('Imie').AsString; //przy założeniu, że Baza jest dataset'em

... ale skąd ten czarodziejski Lazarus miałby wiedzieć który rekord edytować?

edytujesz aktywny rekord

0

To działa! Dziękuje bardzo!
Jeszcze zastanawiam się nad jedną rzeczą. Chciałbym by klawisze dotyczące rekordów "Nowy", Edytuj", "Usuń" były nieaktywne przed otworzeniem/stworzeniem nowej bazy.
Jak mogę sprawdzić czy baza została załadowana do DBGrid czy do DBf?

If Baza.??? then //Lub If DBGrid1.???
  begin
    Form1.NowyRekord.Enabled:=true;
    Form1.EdycjaRekord.Enabled:=true;
    Form1.UsunRekord.Enabled:=true;
    Form1.SzukajRekord.Enabled:=true;
  end;                             

Dobra mam! Przecież DBf ma Event AfterOpen. :D
Problem rozwiązany! Dziękuję!

1 użytkowników online, w tym zalogowanych: 0, gości: 1