(Owner as TForm).Name e depois?
Dando este comando no form que foi chamado (FOpcGraf) obtenho o form proprietário.
No meu caso retorna ´FConsSemana´.
No form ´FConsSemana´ existe um TChart chamado ´C1´
Quero q este form (FOpcGraf) altere alguma configurações de ´C1´ q aparece em vários form (Um deles é ´FConsSemana´).
Veja uma das ciosas q quero:
No evento OnClick do botão do form OpcGraf faça o seguinte:
FConsSemana.C1.Visible:=True;
Só q o form FConsSemana, vai mudar de acordo com o form q chamar FOpcGraf.
Se fui claro, alguém pode me ajudar??
No meu caso retorna ´FConsSemana´.
No form ´FConsSemana´ existe um TChart chamado ´C1´
Quero q este form (FOpcGraf) altere alguma configurações de ´C1´ q aparece em vários form (Um deles é ´FConsSemana´).
Veja uma das ciosas q quero:
No evento OnClick do botão do form OpcGraf faça o seguinte:
FConsSemana.C1.Visible:=True;
Só q o form FConsSemana, vai mudar de acordo com o form q chamar FOpcGraf.
Se fui claro, alguém pode me ajudar??
Pedro Dias
Curtidas 0
Respostas
Beppe
17/10/2003
Há três soluções:
1) TControl(Owner.FieldAddress(´C1´)^).Hide;
As outras duas maneiras seriam usar um form ancestrl comum, e usar o serviço de mensagens, mas está é bem mais simples.
Ataliba
1) TControl(Owner.FieldAddress(´C1´)^).Hide;
As outras duas maneiras seriam usar um form ancestrl comum, e usar o serviço de mensagens, mas está é bem mais simples.
Ataliba
GOSTEI 0
Pedro Dias
17/10/2003
Valeu a dica testei TControl(Owner.FieldAddress(´C1´)^).Hide e funcionou.
Vc saberia se é possivel aprofundar o TControl, veja um evento de um componebte q altero o grafico.
procedure TFOpcGraf.OpcValorClick(Sender: TObject);
var
i:Integer;
begin
Case OpcValor.ItemIndex of
0:FConsSem.C1.Series[NumGrafAtivo].Marks.Style:=smsValue;
1:FConsSem.C1.Series[NumGrafAtivo].Marks.Style:=smsPercent;
2:FConsSem.C1.Series[NumGrafAtivo].Marks.Style:=smsLabel;
3:FConsSem.C1.Series[NumGrafAtivo].Marks.Style:=smsLabelPercent;
4:FConsSem.C1.Series[NumGrafAtivo].Marks.Style:=smsLabelValue;
5:FConsSem.C1.Series[NumGrafAtivo].Marks.Style:=smsPercentTotal;
6:FConsSem.C1.Series[NumGrafAtivo].Marks.Style:=smsLabelPercentTotal;
end;
end;
Ou seja o comando q vc acabou de me ensinar, somente esconte o C1, preciso atuar mais neste componente, mas mesmo assim muito obrigadooooo
Vc saberia se é possivel aprofundar o TControl, veja um evento de um componebte q altero o grafico.
procedure TFOpcGraf.OpcValorClick(Sender: TObject);
var
i:Integer;
begin
Case OpcValor.ItemIndex of
0:FConsSem.C1.Series[NumGrafAtivo].Marks.Style:=smsValue;
1:FConsSem.C1.Series[NumGrafAtivo].Marks.Style:=smsPercent;
2:FConsSem.C1.Series[NumGrafAtivo].Marks.Style:=smsLabel;
3:FConsSem.C1.Series[NumGrafAtivo].Marks.Style:=smsLabelPercent;
4:FConsSem.C1.Series[NumGrafAtivo].Marks.Style:=smsLabelValue;
5:FConsSem.C1.Series[NumGrafAtivo].Marks.Style:=smsPercentTotal;
6:FConsSem.C1.Series[NumGrafAtivo].Marks.Style:=smsLabelPercentTotal;
end;
end;
Ou seja o comando q vc acabou de me ensinar, somente esconte o C1, preciso atuar mais neste componente, mas mesmo assim muito obrigadooooo
GOSTEI 0
Beppe
17/10/2003
Clarooooooo que é possível:
Eu tinha castado para TControl apenas por praticidade. FieldAddress retorna o endereço do campo publicado. Você dereferencia e casta para qualquer classe compatível. Por segurança, você pode usar Owner.FieldAddress(´C1´)^ as TChart.
Ataliba
procedure TFOpcGraf.OpcValorClick(Sender: TObject); var I: Integer; C1: TChart; begin // armazeno numa variável pra facilitar C1 := TChart(Owner.FieldAddress(´C1´)^); case OpcValor.ItemIndex of 0: C1.Series[NumGrafAtivo].Marks.Style:=smsValue; 1: C1.Series[NumGrafAtivo].Marks.Style:=smsPercent; 2: C1.Series[NumGrafAtivo].Marks.Style:=smsLabel; 3: C1.Series[NumGrafAtivo].Marks.Style:=smsLabelPercent; 4: C1.Series[NumGrafAtivo].Marks.Style:=smsLabelValue; 5: C1.Series[NumGrafAtivo].Marks.Style:=smsPercentTotal; 6: C1.Series[NumGrafAtivo].Marks.Style:=smsLabelPercentTotal; end; end;
Eu tinha castado para TControl apenas por praticidade. FieldAddress retorna o endereço do campo publicado. Você dereferencia e casta para qualquer classe compatível. Por segurança, você pode usar Owner.FieldAddress(´C1´)^ as TChart.
Ataliba
GOSTEI 0