Fórum Problema com eventos componente #335781
06/01/2007
0
Olá pessoal estou com seguinte duvida:
Criei um componente que desenha figuras de acordo com a escolha de um determinado botão. Ao clicar em um botão crio o componente dentro de um ScrollBox, até aí blz, o problema e que não consigo implementar os eventos do componente que crie em tempo de execução. como exemplo o evento onclick.
Como devo Proceder?
Se puderem me ajudar...
Valeu pela Atenção.
Criei um componente que desenha figuras de acordo com a escolha de um determinado botão. Ao clicar em um botão crio o componente dentro de um ScrollBox, até aí blz, o problema e que não consigo implementar os eventos do componente que crie em tempo de execução. como exemplo o evento onclick.
Como devo Proceder?
Se puderem me ajudar...
Valeu pela Atenção.
Robsbq
Curtir tópico
+ 0
Responder
Posts
07/01/2007
Aroldo Zanela
Colega,
Veja um exemplo de criação de componentes dinamicamente numa ScrollBox e associando o manipulador de eventos OnClick:
Procedure DadosComplementares:
Veja um exemplo de criação de componentes dinamicamente numa ScrollBox e associando o manipulador de eventos OnClick:
Const LimiteVertical = 15; var Botoes: Array of TBitBtn; I, Leitos: Integer; nTop, nLeft: Integer; nHorizontal, nVertical: Integer; begin qLeitos.Open; qLeitos.FetchAll; Leitos := qLeitos.RecordCount; SetLength(Botoes, Leitos); nVertical:= 0; nHorizontal := 0; For I := 0 to Leitos-1 do begin if nVertical>=LimiteVertical then begin nVertical:= 0; nHorizontal := nHorizontal + 100; end; nTop := 10 + (nVertical*30); Botoes[I]:= TBitBtn.Create(Self); Botoes[I].Parent:= ScrollBox; Botoes[I].Left:= 10+nHorizontal; Botoes[I].Top:= nTop; Botoes[I].Hint:= qLeitosLEI_DESCRICAO.Value; Botoes[I].Caption:= qLeitosLEI_NUMERO.Value; Botoes[I].ShowHint:= true; Botoes[I].Margin:= 4; Botoes[I].Tag:= qLeitosLEI_ID.Value; Botoes[i].OnClick := DadosComplementares; ImageList.GetBitmap(0,Botoes[I].Glyph); Inc(nVertical); qInternacoes.Close; qInternacoes.ParamByName(´LEITO´).AsInteger:= qLeitosLEI_ID.Value; qInternacoes.Open; if qInternacoes.RecordCount>0 then begin Botoes[I].Hint:= Botoes[I].Hint + 13 + ´Médico: ´+qInternacoesFUN_NOME.Value + 13 + ´Paciente: ´+qInternacoesPAC_NOME.Value + 13 + qInternacoesINT_INICIO.AsString; ImageList.GetBitmap(1,Botoes[I].Glyph); end; qLeitos.Next; end;
Procedure DadosComplementares:
procedure TForm14.DadosComplementares(Sender: TObject); var I, N: Integer; begin vle.Strings.Clear; qInternacoes.Close; qInternacoes.ParamByName(´LEITO´).AsInteger:= (Sender as TBitBtn).Tag; qInternacoes.Open; if qInternacoes.RecordCount<=0 then exit; N := qInternacoes.FieldCount-1; for I := 0 to N do begin if qInternacoes.Fields[I].Tag=1 then begin vle.InsertRow(qInternacoes.Fields[I].DisplayName, qInternacoes.Fields[I].AsString, true); end; end; end;
Responder
Gostei + 0
07/01/2007
Robsbq
vou tentar ser mais claro.
Tenho um componente que se chama AutomataControl, na minha janela principal tenho 4 botões, ao clicar em um desses botoes chamo o metodo insertState aonde instancio um objeto desse componente, para cada botao que escolher esse componente toma formas diferentes, aí vou adicionado-os dentro de um scrollbox
só que depois não estou conseguindo manipular eventos com os componentes que instancio, como exemplo quero clicar num desses objetos e fazer aparecer um mensagem ´oi´ algo assim.
Vou mandar a parte do codigo aonde crio o componente isso pode te ajudar e entender.
procedure InsertState (StateType: TAutomataControlType;PosX,PosY:integer; StName:String);
var
temp: TAutomataControl;
begin
temp := TAutomataControl.Create (FrmMain.ScrollBox1);
with temp do
begin
ControlType := StateType;
Parent := FrmMain.ScrollBox1;
Name := ´ac´ + IntToStr (Parent.ControlCount);
SetBounds (PosX, PosY, Width, Height);
end;
end;
Valeu pela atenção.....
Tenho um componente que se chama AutomataControl, na minha janela principal tenho 4 botões, ao clicar em um desses botoes chamo o metodo insertState aonde instancio um objeto desse componente, para cada botao que escolher esse componente toma formas diferentes, aí vou adicionado-os dentro de um scrollbox
só que depois não estou conseguindo manipular eventos com os componentes que instancio, como exemplo quero clicar num desses objetos e fazer aparecer um mensagem ´oi´ algo assim.
Vou mandar a parte do codigo aonde crio o componente isso pode te ajudar e entender.
procedure InsertState (StateType: TAutomataControlType;PosX,PosY:integer; StName:String);
var
temp: TAutomataControl;
begin
temp := TAutomataControl.Create (FrmMain.ScrollBox1);
with temp do
begin
ControlType := StateType;
Parent := FrmMain.ScrollBox1;
Name := ´ac´ + IntToStr (Parent.ControlCount);
SetBounds (PosX, PosY, Width, Height);
end;
end;
Valeu pela atenção.....
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)