de quot;procedimento especificoquot; para quot;generico

06/12/2003

1

Olá,
tenho um procedimento, que funciona 100¬ para uma rotina especifica, gostaria de disponiliza-la como generica.

o exemplo abaixo, so funciona para um determinado form, mas se eu quizer utiliza-la em outro form, nao estou conseguindo resolver apenas esse detalhe :

For J := 0 to FrmCadClienteSQL.DBGrid1.Columns.Count -1 do ( na especifica )

For J := 0 to FORMULARIO.DBGrid1.Columns.Count -1 do ( na generica )


...
...
public
{ Public declarations }
end;

var
FrmCadClienteColunasGrid: TFrmCadClienteColunasGrid;
Arquivo : String;
Formulario : TForm;
Tabela : TTable;



procedure TFrmCadClienteColunasGrid.FormShow(Sender: TObject);
begin
Arquivo := FrmPrincipal.ArquivoOrigemClienteGrid;
Formulario := FrmCadClienteSQL;
Tabela := DMod.TbCliente;

ShowCheckeds(Arquivo, Formulario, Tabela);

end;


procedure TFrmCadClienteColunasGrid.ShowCheckeds(Arquivo: String; Formulario: TForm; Tabela: TTable);
var I : SmallInt;
Esquerda, Topo, Linha : Integer;
VerificarCheckeck : Boolean;
Arq: TextFile;
ConteudoLinha: String;

MyCheckBox : TCheckBox;
begin
..
... tudo normal aqui também
...
end;

*********
AQUI Q ESTAÁ O PROBLEMA
***
**

// ROTINA QUE DISPONIBILIZA AS COLUNAS NO GRID

procedure TFrmCadClienteColunasGrid.DisplayColunasGrid;
var J : Smallint;
Arq : TextFile;
ConteudoLinha : String;
begin
if not FileExists(Arquivo) then
begin
For J := 0 to FrmCadClienteSQL.DBGrid1.Columns.Count -1 do

Tinha quer ser assim
For J := 0 to FORMULARIO.DBGrid1.Columns.Count -1 do

Resumindo :
tenho um Form pai... com um dbgrid...
tem um botao, q chama essa rotina (esta rotina é apenas para disponiblizar as colunas que o usuario quer ver no form pai).
Clicando nesse botao, ele chama o form filho. (neste form, ele monta varios TCHECKBOX em tempo de execucao, de acordo com a quantidade de colunas q o grid possui). O usuario seleciona os campos q deseja, e ao finalizar, ele disponibiliza no form pai, as colunas selecionadas.

Mas... se eu quizer fazer tudo isso, em outro form qualquer, teria que repetir todo o codigo (desnecessariamente). Sendo que, se conseguir monta-la como generica, basta apenas mudar a referencia e pronto.

entao :
For J := 0 to FrmCadClienteSQL.DBGrid1.Columns.Count -1 do
´FrmCadClienteSQL´ é de um form especifico e se colocar assim :
´Formulario´ fica genérica (pode ser qualquer form q tá chamando o procedimento´

Obrigado, espero q nao esteja confuso meu texto.

Cleber.


Responder

Posts

06/12/2003

Beppe

Se eu entendi bem, passando o dbgrid como parâmetro resolve.

Mas depende de onde você quer os checkbox, quem vai chamar a função, se os forms são da mesma classe...


Responder

07/12/2003

Pedih

Se eu entendi bem, passando o dbgrid como parâmetro resolve. Mas depende de onde você quer os checkbox, quem vai chamar a função, se os forms são da mesma classe...



OK. Ataliba.
no mesmo dia, me passaram essa sua idéia também, elaborei e funcionou perfeitamente. Muito obrigado pela atencao. Valeu.


Responder