Avatar billede skindbeni Nybegynder
26. februar 2007 - 20:35 Der er 2 kommentarer og
1 løsning

Åbne form og hente værdi i DBGrid

Hej.

Jeg har en form hvorfra jeg kalder en form2 med en DBGrid.

Jeg har i DBGrid'ens onClick hændelse blot skrevet
  close

I form2's close event har jeg skrevet
  ModalResult:= mrOK;

I min form1 har jeg en knap med følgende kode:
Procedure form1.button1;
begin
  form2.show;
  If form2.ModalResult = mrOK then
    s := form2.DBGrid.Fields[0].DisplayText;
end;

Meningen er så, at når jeg klikker på en række i form2' DBGrid, så skal form2 lukkes og værdien fra det første felt i den markerede række í Griden skal overføres til variabel s fra form1.buttons onclick procedure.

Om min fremgangsmåde er nogenlunde rigtig ved jeg ikke, men det virker ikke efter hensigten.

a) Første gang jeg klikker, så bliver der ikke overført noget.
b) Anden gang jeg klikker, så bliver værdien fra feltet, der burde være overført i punkt a overført
c) 3. gang jeg klikker, så bliver værdien fra feltet, der burde være overført i punkt b først overført.
osv.
Avatar billede dkn Nybegynder
26. februar 2007 - 23:23 #1
du bliver nødt til at bruge
form2.showmodal;

det betyder også at den får focus, det ved jeg så ikke hvor godt vil fungere i lige netop dit program
Avatar billede hrc Mester
01. marts 2007 - 09:51 #2
Jeg forstår ikke hvorfor du vælger at Show'e din form? Hvad er der galt med ShowModal?

var
  Field : TField;
  frmForm2 : TfrmForm2;
begin
  frmForm2 := TfrmForm.Create(self);
  try
    if frmForm2.ShowModal = mrOK then
    begin
      Field := frmForm2.DBGrid1.Fields[0];
      s := Field.Value; // Alternativt Field.AsString
    end;
  finally
    frmForm2.Release;
  end;

Nu bruger du vel ikke autogenererede forme? Lad vær' hvis du gør - det er en dårlig metode.. og nu jeg er i gang: Hvis du bruger TTables så vinder du i ydelse ved at skifte til TQuery.

P.S. Pas på hvis din tabel-komponent ligger på Form1 og linkes til i form2. Jeg har oplevet at linket forsvinder ganske umotiveret. Aner ikke hvad der foregår men 2 gange har jeg sendt et defekt program ud til kunder hvor skærmbilleder ikke virkede fordi DBGriddens Datasource var blevet nulstillet.
Avatar billede skindbeni Nybegynder
01. marts 2007 - 21:39 #3
Hej og tak for dit svar.

Jeg brugte show, da formen så automatisk lukkede, når der blev klikket udenfor formen.

Jeg har også været udsat for op til flere gange, at min kobling mellem DB => og DBGrid knækker, hvor jeg igen må sætte datasourcen på igen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester