Fórum After Open: adicionar parâmetro ao evento #330767

05/10/2006

0

Bom dia, senhores!

Desejo configurar os TFields de um SQLQuery no AfterOpen, especificamente os ProviderFlags. Até aí, nenhum problema (já testei e funcionou perfeitamente). Ocorre que as configurações estão em um IniFile, que desejo passar por parâmetro, juntamente com o Dataset.

Alguém sabe como reescrever o evento?

[color=darkblue:d17858b94d][b:d17858b94d]SQLQuery1AfterOpen(Dataset: TDataset; IniFile: TIniFile)[/b:d17858b94d][/color:d17858b94d]
Grato pela atenção!

Henrique


José Cordeiro

José Cordeiro

Responder

Posts

05/10/2006

Massuda

Não entendi direito... você quer que a VCL te passe um parâmetro extra? Nesse caso você teria que reescrever boa parte da VCL. Explique melhor o que pretende fazer.


Responder

Gostei + 0

05/10/2006

José Cordeiro

Olá, Massuda!

Pensei em:
a) Criar um novo evento (talvez derivado de TDatasetNotifyEvent);
b) Atribuir AfterOpen:=<meu evento>, em vez de apontar para o evento nativo da VCL.

Não tenho a menor idéia da possibilidade nem da complexidade da tarefa.

Consegui o resultado desejado criando uma variável privada do tipo TIniFile e atribuindo a ela o arquivo desejado, imediatamente antes de abrir o dataset. Funciona, mas não é o ideal, não é?

Grato pela atenção


Responder

Gostei + 0

05/10/2006

Massuda

[quote:7def5df05a=´José Henrique Cordeiro´]Não tenho a menor idéia da possibilidade nem da complexidade da tarefa.[/quote:7def5df05a]Teria que modificar os fontes da VCL e isso gera uma lista interminável de problemas sutis ou você teria que criar uma classe sua derivada de TSQLQuery (menos trabalhoso).

[quote:7def5df05a=´José Henrique Cordeiro´]Consegui o resultado desejado criando uma variável privada do tipo TIniFile e atribuindo a ela o arquivo desejado, imediatamente antes de abrir o dataset. Funciona, mas não é o ideal, não é?[/quote:7def5df05a]Normalmente usa-se um membro privado (uma variável declarada na parte private) do form ou data module para isso. é mais fácil de fazer e de entender.


Responder

Gostei + 0

06/10/2006

José Cordeiro

Posso usar a propriedade Tag do SQLQuery para armazenar o ponteiro para o IniFile a ser usado, não posso? Não costumo usar ponteiros diretamente, mas já li algo a respeito. Assim, a informação fica encapsulada no dataset.

A criação de uma classe derivada de TSQLQuery é boa. Mas acho que o uso da Tag é menos trabalhoso e atende perfeitamente, não acha?

[]s

Henrique


Responder

Gostei + 0

06/10/2006

Massuda

Você pode usar Tag para armazenar qualquer coisa que possa ser convertida para um Integer.

Eu evito usar Tag porque as vezes eu encontro alguns usos inesperados para essa propriedade. Nem sempre fica claro, especialmente quando não foi você que escreveu o código, qual a finalidade de usar essa propriedade.


Responder

Gostei + 0

06/10/2006

José Cordeiro

Concordo 100¬ com você, Massuda! Sempre tive (e continuo tendo) exatamente a mesma preocupação. Esta é a primeira necessidade clara de uso _ associação a um arquivo de configurações _ cujas alternativas são muito mais caras (por exemplo, criar uma classe descendente de TSQLQuery). É possível, mesmo, que eu a defina como padrão de projeto (neste caso, válida para quaisquer componentes).

Grato pela atenção!

Henrique


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar