After Open: adicionar parâmetro ao evento
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
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
Curtidas 0
Respostas
Massuda
05/10/2006
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.
GOSTEI 0
José Cordeiro
05/10/2006
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
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
GOSTEI 0
Massuda
05/10/2006
[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.
[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.
GOSTEI 0
José Cordeiro
05/10/2006
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
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
GOSTEI 0
Massuda
05/10/2006
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.
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.
GOSTEI 0
José Cordeiro
05/10/2006
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
Grato pela atenção!
Henrique
GOSTEI 0