Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: Stefano - Settembre 18, 2012, 03:18:55 pm

Titolo: DBGrid e valore corrente
Inserito da: Stefano - Settembre 18, 2012, 03:18:55 pm
da un DbGrid leggo se il valore del campo DATA ha un valore,
nel DataModule evento After Scroll su SQLQuery , leggo il valore del record attivo

c'e' pero' il problema dell'uso dei tasti PgUp, PgDn , Ctrl Home, Ctrl End;
leggo il valore del record al momento della pressione del tasto
ma non quello del record di arrivo.

mi servirebbe una call back in modo che quando scatta OnAfterScroll potesse comunicare con il Form.

in pratica devo leggere il valore dopo la pressione dei tasti, ma non ho eventi che mi permnettano di farlo.

Codice: [Seleziona]
//cosi non ci sara' mai la certezza di leggere il record voluto
procedure Tfrm_InvioMail.grdEmailKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var sValore: string;
begin
  inherited;
  sValore := grdEmail.Datasource.Dataset.FieldByName('DATA').AsString;

  btnInvia.Enabled := false;
  if sValore = '' then btnInvia.Enabled := true;
end;
Titolo: Re:DBGrid e valore corrente
Inserito da: Stefano - Settembre 18, 2012, 03:44:40 pm
ho trovato un modo per farlo:
inserendo un TDBEdit ed attivando l'evento OnChange.
Codice: [Seleziona]
procedure Tfrm_InvioMail.EdDataChange(Sender: TObject);
begin
  inherited;
  BtnInvia.Enabled := false;
  if EdData.Text = '' then BtnInvia.Enabled := true;
end;
Titolo: Re:DBGrid e valore corrente
Inserito da: xinyiman - Settembre 18, 2012, 11:18:18 pm
Bravo stefano ti sei dato un ottima risposta da solo. Se poi non ti aggrada vedere il campo aggiuntivo che hai usato basta che lo rendi invisibile.