de quot;procedimento especificoquot; para quot;generico
06/12/2003
0
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.
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.
Pedih
Curtir tópico
+ 0
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...
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
Clique aqui para fazer login e interagir na Comunidade :)