Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Dúvida em Procedure Publica..


mlskull

Pergunta

Ola,

Gente eu to com um pequeno problema..

Tipo criei uma procedure publica no form1 (pai (_index)) e quero usala no form2 (filho).

Essa procedure cria StringGrids.

procedure T_index.CriaStringGrid(Cod, Esq, Cima: Integer);
begin
  SG[Cod]             := TStringGrid.Create(nil);
  SG[Cod].Parent      := Self;
  SG[Cod].ColCount    := 3;
  SG[Cod].Name        := 'sg_' + IntToStr(Cod);
  SG[Cod].Left        := Esq;
  SG[Cod].Top         := Cima - 100;
  SG[Cod].Height      := 140;
  SG[Cod].Width       := 178;
  SG[Cod].FixedCols   := 0;
  SG[Cod].Cells[0,0]  := 'CÓD';
     SG[Cod].Cells[1,0]  := 'DIA';
  SG[Cod].Cells[2,0]  := 'JOGO';
  SG[Cod].ColWidths[0]:= 30;
  SG[Cod].ColWidths[1]:= 30;
  SG[Cod].ColWidths[2]:= 95;
//--------- Cria a Descrição da Tabela...
  TL[Cod]             := TLabel.Create(nil);
  TL[Cod].Parent      := Self;
  TL[Cod].Name        := 'tl_' + IntToStr(Cod);
  TL[Cod].Left        := Esq;
  TL[Cod].Top         := Cima-118;
  TL[Cod].Width       := 178;
  TL[Cod].Height      := 18;
end;
Depois eu chamo ela no Form2
FOR x := 1 TO 10 DO BEGIN // Cria 10 StrinGrids em seus devidos lugares.
    l_localX := l_localX + 6;

                           _index.CriaStringGrid(x, l_localX, l_localY);

    l_localX := l_localX + 181;
    IF x MOD 5 = 0 THEN BEGIN
     l_localY := l_localY + 180;
     l_localX := 0;
    END;
  END;

l_localX = Horizontal

l_localY = Vertical

Dá tudo correto, cria as stringgrids e etc,...

Mas em vez de criar no Form2, ela cria as stringgrids no Form1

Editado por Jonathan Queiroz
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Resolvido...

Criei uma nova Unit para colocar as 'funções'.

o código fico +/- isso..

Unit =

unit Gr_funcoes; 

interface 
    uses 
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
      Dialogs, StdCtrls, DB, ADODB, Grids, Menus; 
      procedure CriaStringGrid(Cod, Esq, Cima: Integer; l_janela : TWincontrol); 
implementation 
    uses Index,Form2; 

procedure CriaStringGrid(Cod, Esq, Cima: Integer; l_janela : TWincontrol); 
begin 
  SG[Cod]             := TStringGrid.Create(l_janela); 
  SG[Cod].Parent      := l_janela; 
  SG[Cod].ColCount    := 3; 
  SG[Cod].Name        := 'sg_' + IntToStr(Cod); 
  SG[Cod].Left        := Esq; 
  SG[Cod].Top         := Cima - 100; 
  SG[Cod].Height      := 140; 
  SG[Cod].Width       := 178; 
  SG[Cod].FixedCols   := 0; 
  SG[Cod].Cells[0,0]  := 'CÓD'; 
    SG[Cod].Cells[1,0]  := 'DIA'; 
  SG[Cod].Cells[2,0]  := 'JOGO'; 
  SG[Cod].ColWidths[0]:= 30; 
  SG[Cod].ColWidths[1]:= 30; 
  SG[Cod].ColWidths[2]:= 95; 
//--------- Cria a Descrição da Tabela... 
  TL[Cod]             := TLabel.Create(l_janela); 
  TL[Cod].Parent      := l_janela; 
  TL[Cod].Name        := 'tl_' + IntToStr(Cod); 
  TL[Cod].Left        := Esq; 
  TL[Cod].Top         := Cima-118; 
  TL[Cod].Width       := 178; 
  TL[Cod].Height      := 18; 
end; 

end.
Form2 =
procedure TFomr2.FormCreate(Sender: TObject); 
Var 
x : Integer; 
Begin 
  l_localY := 180; 
  FOR x := 1 TO 10 DO BEGIN 
    l_localX := l_localX + 6; 
   CriaStringGrid(x, l_localX, l_localY,SELF); 
    l_localX := l_localX + 181; 
    IF x MOD 5 = 0 THEN BEGIN 
     l_localY := l_localY + 180; 
     l_localX := 0; 
    END; 
  END;

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...