erro no sender
24/07/2008
0
Estou fazendo um procedimento para buscar umas aulas marcadas dos alunos, mas ai se no procedimento eu nao colocar
assim consultaagendamento(sender : TObject) ele dá erro nessa linha, no sender, fala que não está declarado:
e se eu coloco na hora que vou chamar o procedimento assim :
consultaagendamento;
ai dá esse erro:
estou chamando esse procedimento depois da consulta do instrutor e depois da consulta de horarios;
assim consultaagendamento(sender : TObject) ele dá erro nessa linha, no sender, fala que não está declarado:
ParamByName(´Hor´).AsTime := StrToDate(TpsvBorderLabel( FindComponent( ´HOR´ + IntToStr( ( Sender as TEdit ).TAG ) ) ).Caption);
e se eu coloco na hora que vou chamar o procedimento assim :
consultaagendamento;
ai dá esse erro:
not enough actual parameters
procedure TFrmTeoricas.ConsultaAgendamento(sender : TObject); var x, vconta : integer; begin //alunos := 7; (alunos é a minha variavel que recebe o total de alunos) vconta:=1; for x := 1 to ContaLinhasHoras do begin with DtmIza.QryIza do begin close; Sql.Clear; Sql.add(´select * from teoricas where instrutor = :inst and data = :dat and horario = :hor´); ParamByName(´Inst´).AsString := TxtCodIns.Text; ParamByName(´Dat´).AsDate := TxtData.date; ParamByName(´Hor´).AsTime := StrToDate(TpsvBorderLabel( FindComponent( ´HOR´ + IntToStr( ( Sender as TEdit ).TAG ) ) ).Caption); open; while not eof do begin DtmIza.QryIza.FieldByName(´Alunos´).AsString := TEdit( FindComponent( ´Alu´ + InttoStr( vconta ) ) ).Text; vconta := vconta + 1; next; end; if vconta=(alunos*x) then begin vconta := vconta + ((alunos*x)-vconta); end; end; end; end.
estou chamando esse procedimento depois da consulta do instrutor e depois da consulta de horarios;
procedure TFrmTeoricas.txtcodinsExit(Sender: TObject); begin ConsultaRegistros (´Instrutores´, ´Codigo, Nome´, ´Codigo=´ + TxtCodIns.Text); TxtCodIns.Text := LeDados (´Codigo´); TxtNomIns.Text := LeDados (´Nome´); TxtCodIns.Text := StrZero (StrToFloat(TxtCodIns.Text), 3); TxtCod.SetFocus; SpbAluLoc.Enabled := True; TxtCodMat.ReadOnly := False; SpbAnt.Enabled := True; SpbPro.Enabled := True; // CriaHorarios; Conta := 1; ContaLinhasHoras := 0; // para somar quantos linhas de horarios tem With DtmIza.QryIza do begin close; sql.Clear; sql.Add(´Select * From HorariosTeoricas where Instrutor = :Inst order by horarioInicial´); ParamByName(´Inst´).AsString := txtcodins.Text; open; end; if DtmIza.QryIza.RecordCount = 0 then begin ShowMessage(´Instrutor(a) não tem horario de aulas Teóricas cadastradas!´); txtcodIns.SetFocus; end else begin while ( not dtmIza.qryiza.EOF ) do begin TpsvBorderLabel( FindComponent( ´Hor´ + IntToStr( Conta ) ) ).Caption := FormatDateTime(´hh:nn´, DtmIza.QryIza.FieldByName(´HorarioInicial´).AsDateTime); TpsvBorderLabel( FindComponent( ´Hora´ + IntToStr( Conta ) ) ).Caption := FormatDateTime(´hh:nn´, DtmIza.QryIza.FieldByName(´HorarioFinal´).AsDateTime); conta :=conta+1; ContaLinhasHoras := ContaLinhasHoras + 1; dtmIza.qryiza.Next; end; end; ConsultaAgendamento; end;
Robinhocne
Curtir tópico
+ 0
Responder
Posts
27/07/2008
Micheus
[b:0a6a637a5b]robinhocne[/b:0a6a637a5b], o erro está de acordo com a forma como vc está usando seu código.
No procedimento [i:0a6a637a5b]ConsultaAgendamento[/i:0a6a637a5b] vc está fazendo uso de uma variável chamada [i:0a6a637a5b]Sender[/i:0a6a637a5b] (que comumente é um parâmtro nos eventos):
[i:0a6a637a5b]ParamByName(´Hor´).AsTime := StrToDate(TpsvBorderLabel( FindComponent( ´HOR´ + IntToStr([color=red:0a6a637a5b] ( [b:0a6a637a5b]Sender[/b:0a6a637a5b] as TEdit ).TAG )[/color:0a6a637a5b] ) ).Caption);[/i:0a6a637a5b]
Então, o que vc tem que fazer é definir o que vc pretendia usar nesta linha.
Observando o código no outro procedimento ([i:0a6a637a5b]txtcodinsExit[/i:0a6a637a5b]), observamos que vc usa algo parecido:
[i:0a6a637a5b]TpsvBorderLabel( FindComponent( ´Hor´ + IntToStr( [color=red:0a6a637a5b]Conta[/color:0a6a637a5b] ) ) ).Caption:= FormatDateTime( ...[/i:0a6a637a5b]
Se lá no procedimento [i:0a6a637a5b]ConsultaAgendamento[/i:0a6a637a5b], vc pretende usar esta mesma informação, então o que vc precisa é usar lá esta variável, que aparentemente é global. Ou ainda, definir apropriadamente o parâmetro na função (como integer), usar ele no lugar do tal sender que lá vc implementou e passar um valor para ele ao chamar a função.
O que está havendo, na verdade, é um erro de lógica sua mesmo. Só vc vai poder definir como isto vai ser resolvido, uma vez que sabe o que quer fazer.
Abraços
No procedimento [i:0a6a637a5b]ConsultaAgendamento[/i:0a6a637a5b] vc está fazendo uso de uma variável chamada [i:0a6a637a5b]Sender[/i:0a6a637a5b] (que comumente é um parâmtro nos eventos):
[i:0a6a637a5b]ParamByName(´Hor´).AsTime := StrToDate(TpsvBorderLabel( FindComponent( ´HOR´ + IntToStr([color=red:0a6a637a5b] ( [b:0a6a637a5b]Sender[/b:0a6a637a5b] as TEdit ).TAG )[/color:0a6a637a5b] ) ).Caption);[/i:0a6a637a5b]
Então, o que vc tem que fazer é definir o que vc pretendia usar nesta linha.
Observando o código no outro procedimento ([i:0a6a637a5b]txtcodinsExit[/i:0a6a637a5b]), observamos que vc usa algo parecido:
[i:0a6a637a5b]TpsvBorderLabel( FindComponent( ´Hor´ + IntToStr( [color=red:0a6a637a5b]Conta[/color:0a6a637a5b] ) ) ).Caption:= FormatDateTime( ...[/i:0a6a637a5b]
Se lá no procedimento [i:0a6a637a5b]ConsultaAgendamento[/i:0a6a637a5b], vc pretende usar esta mesma informação, então o que vc precisa é usar lá esta variável, que aparentemente é global. Ou ainda, definir apropriadamente o parâmetro na função (como integer), usar ele no lugar do tal sender que lá vc implementou e passar um valor para ele ao chamar a função.
O que está havendo, na verdade, é um erro de lógica sua mesmo. Só vc vai poder definir como isto vai ser resolvido, uma vez que sabe o que quer fazer.
Abraços
Responder
Clique aqui para fazer login e interagir na Comunidade :)