Duvida Delphi - TabSheet e PageControl
19/07/2017
0
Possuo dentro de um pagecontrol 3 tabsheet (Tab1, Tab2 e Tab3).
Entretanto, cada tab possui seu edit.text específico como por exemplo:
Tabsheet1 possui o edit1 e edit2
Tabsheet2 possui o edit3 e edit4
Tabsheet3 possui o edit5 e edit6
Gostaria, no desenvolvimento do programa, que quando o Tabsheet1 fosse selecionado/ativado, o tabsheet2 e tabsheet3 ficasse inativado (com seus respectivos edit3, edit4, edit5 e edit6).
Seria por exemplo o cálculo de uma área.
Quando tabsheet1 (que seria aba retangular fosse selecionada), os edit2,3 4 e 5 da tab 2, e tab 3, deverão ser inativados para não haver conflitos com as variáveis no decorrer da programação.
Como posso proceder com o caso?
Obrigado pessoal.
Joao Df
Post mais votado
19/07/2017
procedure TForm1.Tab1Show(Sender: TObject); begin edit3.Enabled := False; edit4.Enabled := False; end;
Dessa forma quando o Tab1 for selecionado vai cair no evento OnShow e desabilitar os outros dois edit do exemplo. Esse é só um exemplo básico de como você pode fazer, mas aconselho para que seu código fique menor e mais organizado já que são três TabSheet, a criação de uma procedure para jogar no evento OnShow de cada um deles.
procedure TForm1.pHabilitaEdit; begin if PageControl1.TabIndex = 0 then begin Edit1.Enabled := True; Edit2.Enabled := True; edit3.Enabled := False; edit3.Clear; edit4.Enabled := False; edit4.Clear; edit5.Enabled := False; edit5.Clear; edit6.Enabled := False; edit6.Clear; end else if PageControl1.TabIndex = 1 then begin edit1.Enabled := False; edit1.Clear; edit2.Enabled := False; edit2.Clear; edit3.Enabled := True; edit4.Enabled := True; edit5.Enabled := False; edit5.Clear; edit6.Enabled := False; edit6.Clear; end else if PageControl1.TabIndex = 2 then begin edit1.Enabled := False; edit1.Clear; edit2.Enabled := False; edit2.Clear; edit3.Enabled := False; edit3.Clear; edit4.Enabled := False; edit4.Clear; edit5.Enabled := True; edit6.Enabled := True; end; end; procedure TForm1.Tab1Show(Sender: TObject); begin pHabilitaEdit; end; procedure TForm1.Tab2Show(Sender: TObject); begin pHabilitaEdit; end; procedure TForm1.Tab3Show(Sender: TObject); begin pHabilitaEdit; end;
Imagina ter que jogar este código da procedure nos três eventos OnShow? Com a procedure você deixa mais organizado. Note também que coloquei um Clear nos edits inativos para limpar o texto digitado pelo usuário, você pode optar por usar ou não. Espero que isso o ajude.
Igor Lisboa
Mais Posts
19/07/2017
Natanael Ferreira
procedure habilitaEdit(tab: TTabSheet); var i: Integer; begin for i := 0 to componentcount - 1 do if Components[i] is TEdit then if TEdit(Components[i]).Parent.ClassType = TTabSheet then if TEdit(Components[i]).Parent = tab then TEdit(Components[i]).Enabled := true else TEdit(Components[i]).Enabled := False; end;
Para usar, basta chamá-la no evento OnChange do PageControl:
habilitaEdit(TPageControl(Sender).ActivePage);
Neste caso, a procedure vai habilitar os Edits que estão na página ativa e desativar os edit das outras páginas.
20/07/2017
Joao Df
Obrigado pela compreensão do caso, estou tentando desenvolver mas como não sou avançado na programação, estou tendo algumas dificuldades referente ao assunto. Minha programação é a seguinte:
---------------------------------------------------------------------------------------------------------------------
procedure TForm1.TabSheet1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
x:=1;
b:=StrTofloat(Edit2.Text);
h:=StrTofloat(Edit3.Text);
Cob:=StrTofloat(Edit4.Text);
Cobp:=StrTofloat(Edit5.Text);
Ac[x]:=(b*h);
PP:=(Ac[x]/1000000)*25;
Z2[x]:=((Ac[x]*h/2)/(Ac[x]));
Z1[x]:=(h-(Z2[x]));
I[x]:=((b*h*h*h)/12);
W01[x]:=(I[x]/(-z1[x]));
W02[x]:=(I[x]/(z2[x]));
k1[x]:=(W02[x]/(Ac[x]));
k2[x]:=(W01[x]/(Ac[x]));
e[x]:=(Z2[x]-cob);
end;
procedure TForm1.TabSheet2ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
x:=1;
bw:=StrTofloat(Edit6.Text);
bfs:=StrTofloat(Edit7.Text);
h:=StrTofloat(Edit8.Text);
hfs:=StrTofloat(Edit9.Text);
Cob:=StrTofloat(Edit10.Text);
Cobp:=StrTofloat(Edit11.Text);
Ac[x]:=((bw*(h-hfs))+(hfs*bfs));
PP:=(Ac[x]/1000000)*25;
Z2[x]:=(((bw*(h-hfs)*(h-hfs)/2))+((hfs*bfs)*((hfs/2)+(h-hfs))))/(Ac[x]);
Z1[x]:=(h-(Z2[x]));
I[x]:=(((bw*(h-hfs)*(h-hfs)*(h-hfs))/12)+(bw*(h-hfs))*(((h-hfs)/2-(Z2[x]))*((h-hfs)/2-(Z2[x]))))+
(bfs*hfs*hfs*hfs/12)+((bfs*hfs)*((((hfs/2)+(h-hfs))-(Z2[x]))*(((hfs/2)+(h-hfs))-(Z2[x])))));
W01[x]:=(I[x]/(-z1[x]));
W02[x]:=(I[x]/(z2[x]));
k1[x]:=(W02[x]/(Ac[x]));
k2[x]:=(W01[x]/(Ac[x]));
e[x]:=(Z2[x]-cob);
end;
procedure TForm1.TabSheet3ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
x:=1;
bw:=StrTofloat(Edit12.Text);
bfs:=StrTofloat(Edit13.Text);
hfs:=StrTofloat(Edit14.Text);
h:=StrTofloat(Edit15.Text);
bfi:=StrTofloat(Edit16.Text);
hfi:=StrTofloat(Edit17.Text);
Cob:=StrTofloat(Edit18.Text);
Cobp:=StrTofloat(Edit19.Text);
Ac[x]:=((bw*(h-hfi-hfs))+(hfi*bfi)+(hfs*bfs));
PP:=(Ac[x]/1000000)*25;
Z2[x]:=((bfi*hfi*hfi/2)+(hfs*bfs*((hfs/2)+(h-hfs)))+((bw*(h-hfi-hfs))*(((h-hfi-hfs)/2)+hfi)))/(Ac[x]);
Z1[x]:=(h-(Z2[x]));
I[x]:=(((bfi*hfi*hfi*hfi)/12)+(bfi*hfi)*(((hfi/2)-Z2[x])*((hfi/2)-Z2[x])))+
(((bw*(h-hfi-hfs)*(h-hfi-hfs)*(h-hfi-hfs))/12)+(bw*(h-hfi-hfs))*(((((h-hfi-hfs)/2)+hfi)-Z2[x])*((((h-hfi-hfs)/2)+hfi)-Z2[x])))+
(((bfs*hfs*hfs*hfs)/12)+(bfs*hfs)*((((hfs/2)+h-hfs)-(Z2[x]))*(((hfs/2)+h-hfs)-(Z2[x]))));
W01[x]:=(I[x]/(-z1[x]));
W02[x]:=(I[x]/(z2[x]));
k1[x]:=(W02[x]/(Ac[x]));
k2[x]:=(W01[x]/(Ac[x]));
e[x]:=(Z2[x]-cob);
end;
---------------------------------------------------------------------------------------------------------------------
Percebam que a variável W01, W02, K1, K2, e, I .... estão em comum dentro de cada tabsheet.
Conforme vocês alertaram, eu preciso criar uma rotina de "true" e "false", para que apenas a aba ativa pelo usuário juntamente com os edit que a aba possui seja computada no desenvolvimento do programa?
Devo colocar isso dentro do próprio tabsheet? como ficaria a declaração dentro do "onchange" do pagecontrol?
Estou tentando mas ainda não consigui fazer a rotina.
Novamente, obrigado!
20/07/2017
Joao Df
procedure TForm1.Tab1Show(Sender: TObject); begin edit3.Enabled := False; edit4.Enabled := False; end;
Dessa forma quando o Tab1 for selecionado vai cair no evento OnShow e desabilitar os outros dois edit do exemplo. Esse é só um exemplo básico de como você pode fazer, mas aconselho para que seu código fique menor e mais organizado já que são três TabSheet, a criação de uma procedure para jogar no evento OnShow de cada um deles.
procedure TForm1.pHabilitaEdit; begin if PageControl1.TabIndex = 0 then begin Edit1.Enabled := True; Edit2.Enabled := True; edit3.Enabled := False; edit3.Clear; edit4.Enabled := False; edit4.Clear; edit5.Enabled := False; edit5.Clear; edit6.Enabled := False; edit6.Clear; end else if PageControl1.TabIndex = 1 then begin edit1.Enabled := False; edit1.Clear; edit2.Enabled := False; edit2.Clear; edit3.Enabled := True; edit4.Enabled := True; edit5.Enabled := False; edit5.Clear; edit6.Enabled := False; edit6.Clear; end else if PageControl1.TabIndex = 2 then begin edit1.Enabled := False; edit1.Clear; edit2.Enabled := False; edit2.Clear; edit3.Enabled := False; edit3.Clear; edit4.Enabled := False; edit4.Clear; edit5.Enabled := True; edit6.Enabled := True; end; end; procedure TForm1.Tab1Show(Sender: TObject); begin pHabilitaEdit; end; procedure TForm1.Tab2Show(Sender: TObject); begin pHabilitaEdit; end; procedure TForm1.Tab3Show(Sender: TObject); begin pHabilitaEdit; end;
Imagina ter que jogar este código da procedure nos três eventos OnShow? Com a procedure você deixa mais organizado. Note também que coloquei um Clear nos edits inativos para limpar o texto digitado pelo usuário, você pode optar por usar ou não. Espero que isso o ajude.
Pois é, coloquei exatamente a maneira que indicou... entretanto, ao processar o programa ele informa o seguinte:
'TForm1' does not contain a member named 'tab1show' at line ....
'TForm1' does not contain a member named 'tab2show' at line ....
'TForm1' does not contain a member named 'tab3show' at line ....
'TForm1' does not contain a member named ' pHabilitaEdit' at line ....
Pode me ajudar?!
Valeu!!
20/07/2017
Joao Df
procedure habilitaEdit(tab: TTabSheet); var i: Integer; begin for i := 0 to componentcount - 1 do if Components[i] is TEdit then if TEdit(Components[i]).Parent.ClassType = TTabSheet then if TEdit(Components[i]).Parent = tab then TEdit(Components[i]).Enabled := true else TEdit(Components[i]).Enabled := False; end;
Para usar, basta chamá-la no evento OnChange do PageControl:
habilitaEdit(TPageControl(Sender).ActivePage);
Neste caso, a procedure vai habilitar os Edits que estão na página ativa e desativar os edit das outras páginas.
Amigo, coloquei o código acima para tentar me salvar. haha..
Poderia dar uma ajuda?! eu sempre estou correndo atrás do meu próprio rabo referente a programação Delphi.
Abração.
25/07/2017
Igor Lisboa
Joao, desculpa pela demora mas eu acabei não vendo sua dúvida. Esse erro que está acontecendo com você é muito simples, você copiou o título da minha procedure e por isso o seu delphi não está reconhecendo o "TabShow". Primeiro de tudo, você precisa criar a procedure pHabilitaEdit na sessão "public", pode ser do jeito do Natanael que faz a mesma função que a minha de forma mais organizada e rápida. Para criar a procedure, basta declarar ela como na imagem abaixo que estou enviando e usar o atalho Ctrl + Shift + C.
Procedure pHabilitaEdit
Feito isso, você só vai precisar agora criar o próprio evento "OnShow" dos TabSheet e chamar a procedure "pHabilitaEdit" como nos exemplos, logo abaixo segue uma imagem de onde ativar o evento caso tenha dúvidas.
Event OnShow
Espero que agora fique fácil e te ajude a resolver seus problemas.
Abraços.
08/08/2017
Joao Df
Joao, desculpa pela demora mas eu acabei não vendo sua dúvida. Esse erro que está acontecendo com você é muito simples, você copiou o título da minha procedure e por isso o seu delphi não está reconhecendo o "TabShow". Primeiro de tudo, você precisa criar a procedure pHabilitaEdit na sessão "public", pode ser do jeito do Natanael que faz a mesma função que a minha de forma mais organizada e rápida. Para criar a procedure, basta declarar ela como na imagem abaixo que estou enviando e usar o atalho Ctrl + Shift + C.
Procedure pHabilitaEdit
Feito isso, você só vai precisar agora criar o próprio evento "OnShow" dos TabSheet e chamar a procedure "pHabilitaEdit" como nos exemplos, logo abaixo segue uma imagem de onde ativar o evento caso tenha dúvidas.
Event OnShow
Espero que agora fique fácil e te ajude a resolver seus problemas.
Abraços.
Olá amigo Igor, desculpa-me eu neste caso..
Dei uma parada na programação devido a falta de tempo, e estou retornando apenas agora a trabalhar nela.
Fiz o desenvolvimento conforme comentou acima:
1) Criei a procedure pHabilitaEdit na seção Public;
2) Chamei com o comando CRTL+SHIT+C - Nesta hora, apareceu os três tabsheet na seção private
e fui manualmente na caixa OnShow de cada tabsheet, e coloquei o evento (TabSheet1Show , TabSheet2Show , TabSheet3Show) nas respectivas abas...
o problema que ocorreu no entanto, foi outro:
Aparece uma caixa de "erro" no centro da tela dizendo:
Exception EReadError in module Project.1.exe at 000B20C8.
Error Reading Tabsheet1.onshow: Invalid Property value.
Desculpa-me novamente pela minha grosseria na programação.
Pode quebrar mais este galho?!
Obrigadão!
09/08/2017
Igor Lisboa
09/08/2017
Joao Df
O código pertinente aos TabSheet é:
private
procedure TabSheet1Show(Sender: TObject);
procedure TabSheet2Show(Sender: TObject);
procedure Tabsheet3Show(Sender: TObject);
public
Procedure pHabilitaEdit;
{ Public declarations }
procedure TForm1.pHabilitaEdit;
begin
if PageControl1.TabIndex = 0
Then begin
Edit1.Enabled := True;
Edit2.Enabled := True;
Edit3.Enabled := True;
Edit4.Enabled := True;
Edit5.Enabled := True;
edit6.Enabled := False;
edit6.Clear;
edit7.Enabled := False;
edit7.Clear;
edit8.Enabled := False;
edit8.Clear;
edit9.Enabled := False;
edit9.Clear;
edit10.Enabled := False;
edit10.Clear;
edit11.Enabled := False;
edit11.Clear;
edit12.Enabled := False;
edit12.Clear;
edit13.Enabled := False;
edit13.Clear;
edit14.Enabled := False;
edit14.Clear;
edit15.Enabled := False;
edit15.Clear;
edit16.Enabled := False;
edit16.Clear;
edit17.Enabled := False;
edit17.Clear;
edit18.Enabled := False;
edit18.Clear;
edit19.Enabled := False;
edit19.Clear;
end
else if PageControl1.TabIndex = 1
Then begin
Edit1.Enabled := false;
edit1.Clear;
Edit2.Enabled := false;
edit2.Clear;
Edit3.Enabled := false;
edit3.Clear;
Edit4.Enabled := false;
edit4.Clear;
Edit5.Enabled := false;
edit5.Clear;
edit6.Enabled := true;
edit7.Enabled := true;
edit8.Enabled := true;
edit9.Enabled := true;
edit10.Enabled := true;
edit11.Enabled := true;
edit12.Enabled := False;
edit12.Clear;
edit13.Enabled := False;
edit13.Clear;
edit14.Enabled := False;
edit14.Clear;
edit15.Enabled := False;
edit15.Clear;
edit16.Enabled := False;
edit16.Clear;
edit17.Enabled := False;
edit17.Clear;
edit18.Enabled := False;
edit18.Clear;
edit19.Enabled := False;
edit19.Clear;
end
else if PageControl1.TabIndex = 2
Then begin
Edit1.Enabled := false;
edit1.Clear;
Edit2.Enabled := false;
edit2.Clear;
Edit3.Enabled := false;
edit3.Clear;
Edit4.Enabled := false;
edit4.Clear;
Edit5.Enabled := false;
edit5.Clear;
edit6.Enabled := false;
edit6.Clear;
edit7.Enabled := false;
edit7.Clear;
edit8.Enabled := false;
edit8.Clear;
edit9.Enabled := false;
edit9.Clear;
edit10.Enabled := false;
edit10.Clear;
edit11.Enabled := false;
edit11.Clear;
edit12.Enabled := true;
edit13.Enabled := true;
edit14.Enabled := true;
edit15.Enabled := true;
edit16.Enabled := true;
edit17.Enabled := true;
edit18.Enabled := true;
edit19.Enabled := true;
end;
end;
procedure TForm1.TabSheet1Show(Sender: TObject);
begin
pHabilitaEdit;
end;
procedure TForm1.TabSheet2Show(Sender: TObject);
begin
pHabilitaEdit;
end;
procedure TForm1.Tabsheet3Show(Sender: TObject);
begin
pHabilitaEdit;
end;
procedure TForm1.TabSheet1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
x:=1;
b:=StrTofloat(Edit2.Text);
h:=StrTofloat(Edit3.Text);
Cob:=StrTofloat(Edit4.Text);
Cobp:=StrTofloat(Edit5.Text);
Ac[x]:=(b*h);
PP:=(Ac[x]/1000000)*25;
Z2[x]:=((Ac[x]*h/2)/(Ac[x]));
Z1[x]:=(h-(Z2[x]));
I[x]:=((b*h*h*h)/12);
W01[x]:=(I[x]/(-z1[x]));
W02[x]:=(I[x]/(z2[x]));
k1[x]:=(W02[x]/(Ac[x]));
k2[x]:=(W01[x]/(Ac[x]));
e[x]:=(Z2[x]-cob);
end;
procedure TForm1.TabSheet2ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
x:=1;
bw:=StrTofloat(Edit6.Text);
bfs:=StrTofloat(Edit7.Text);
h:=StrTofloat(Edit8.Text);
hfs:=StrTofloat(Edit9.Text);
Cob:=StrTofloat(Edit10.Text);
Cobp:=StrTofloat(Edit11.Text);
Ac[x]:=((bw*(h-hfs))+(hfs*bfs));
PP:=(Ac[x]/1000000)*25;
Z2[x]:=(((bw*(h-hfs)*(h-hfs)/2))+((hfs*bfs)*((hfs/2)+(h-hfs))))/(Ac[x]);
Z1[x]:=(h-(Z2[x]));
I[x]:=(((bw*(h-hfs)*(h-hfs)*(h-hfs))/12)+(bw*(h-hfs))*(((h-hfs)/2-(Z2[x]))*((h-hfs)/2-(Z2[x]))))+
((bfs*hfs*hfs*hfs/12)+((bfs*hfs)*((((hfs/2)+(h-hfs))-(Z2[x]))*(((hfs/2)+(h-hfs))-(Z2[x])))));
W01[x]:=(I[x]/(-z1[x]));
W02[x]:=(I[x]/(z2[x]));
k1[x]:=(W02[x]/(Ac[x]));
k2[x]:=(W01[x]/(Ac[x]));
e[x]:=(Z2[x]-cob);
end;
procedure TForm1.TabSheet3ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
x:=1;
bw:=StrTofloat(Edit12.Text);
bfs:=StrTofloat(Edit13.Text);
hfs:=StrTofloat(Edit14.Text);
h:=StrTofloat(Edit15.Text);
bfi:=StrTofloat(Edit16.Text);
hfi:=StrTofloat(Edit17.Text);
Cob:=StrTofloat(Edit18.Text);
Cobp:=StrTofloat(Edit19.Text);
Ac[x]:=((bw*(h-hfi-hfs))+(hfi*bfi)+(hfs*bfs));
PP:=(Ac[x]/1000000)*25;
Z2[x]:=((bfi*hfi*hfi/2)+(hfs*bfs*((hfs/2)+(h-hfs)))+((bw*(h-hfi-hfs))*(((h-hfi-hfs)/2)+hfi)))/(Ac[x]);
Z1[x]:=(h-(Z2[x]));
I[x]:=(((bfi*hfi*hfi*hfi)/12)+(bfi*hfi)*(((hfi/2)-Z2[x])*((hfi/2)-Z2[x])))+
(((bw*(h-hfi-hfs)*(h-hfi-hfs)*(h-hfi-hfs))/12)+(bw*(h-hfi-hfs))*(((((h-hfi-hfs)/2)+hfi)-Z2[x])*((((h-hfi-hfs)/2)+hfi)-Z2[x])))+
(((bfs*hfs*hfs*hfs)/12)+(bfs*hfs)*((((hfs/2)+h-hfs)-(Z2[x]))*(((hfs/2)+h-hfs)-(Z2[x]))));
W01[x]:=(I[x]/(-z1[x]));
W02[x]:=(I[x]/(z2[x]));
k1[x]:=(W02[x]/(Ac[x]));
k2[x]:=(W01[x]/(Ac[x]));
e[x]:=(Z2[x]-cob);
end;
Desta maneira, o programa calcularia os valores da Área, Modulo de Resistencia, Inercia, excentricidade entre outros.
Como posso inserir um anexo? Desta maneira, enviaria em formato TXT, caso necessário.
09/08/2017
Joao Df
procedure TabSheet1Show(Sender: TObject);
procedure TabSheet2Show(Sender: TObject);
procedure Tabsheet3Show(Sender: TObject);
public
Procedure pHabilitaEdit;
{ Public declarations }
procedure TForm1.TabSheet1Show(Sender: TObject);
begin
pHabilitaEdit;
end;
procedure TForm1.TabSheet2Show(Sender: TObject);
begin
pHabilitaEdit;
end;
procedure TForm1.Tabsheet3Show(Sender: TObject);
begin
pHabilitaEdit;
end;
procedure TForm1.TabSheet1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
x:=1;
b:=StrTofloat(Edit2.Text);
h:=StrTofloat(Edit3.Text);
Cob:=StrTofloat(Edit4.Text);
Cobp:=StrTofloat(Edit5.Text);
Ac[x]:=(b*h);
PP:=(Ac[x]/1000000)*25;
Z2[x]:=((Ac[x]*h/2)/(Ac[x]));
Z1[x]:=(h-(Z2[x]));
I[x]:=((b*h*h*h)/12);
W01[x]:=(I[x]/(-z1[x]));
W02[x]:=(I[x]/(z2[x]));
k1[x]:=(W02[x]/(Ac[x]));
k2[x]:=(W01[x]/(Ac[x]));
e[x]:=(Z2[x]-cob);
end;
procedure TForm1.TabSheet2ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
x:=1;
bw:=StrTofloat(Edit6.Text);
bfs:=StrTofloat(Edit7.Text);
h:=StrTofloat(Edit8.Text);
hfs:=StrTofloat(Edit9.Text);
Cob:=StrTofloat(Edit10.Text);
Cobp:=StrTofloat(Edit11.Text);
Ac[x]:=((bw*(h-hfs))+(hfs*bfs));
PP:=(Ac[x]/1000000)*25;
Z2[x]:=(((bw*(h-hfs)*(h-hfs)/2))+((hfs*bfs)*((hfs/2)+(h-hfs))))/(Ac[x]);
Z1[x]:=(h-(Z2[x]));
I[x]:=(((bw*(h-hfs)*(h-hfs)*(h-hfs))/12)+(bw*(h-hfs))*(((h-hfs)/2-(Z2[x]))*((h-hfs)/2-(Z2[x]))))+
((bfs*hfs*hfs*hfs/12)+((bfs*hfs)*((((hfs/2)+(h-hfs))-(Z2[x]))*(((hfs/2)+(h-hfs))-(Z2[x])))));
W01[x]:=(I[x]/(-z1[x]));
W02[x]:=(I[x]/(z2[x]));
k1[x]:=(W02[x]/(Ac[x]));
k2[x]:=(W01[x]/(Ac[x]));
e[x]:=(Z2[x]-cob);
end;
procedure TForm1.TabSheet3ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
x:=1;
bw:=StrTofloat(Edit12.Text);
bfs:=StrTofloat(Edit13.Text);
hfs:=StrTofloat(Edit14.Text);
h:=StrTofloat(Edit15.Text);
bfi:=StrTofloat(Edit16.Text);
hfi:=StrTofloat(Edit17.Text);
Cob:=StrTofloat(Edit18.Text);
Cobp:=StrTofloat(Edit19.Text);
Ac[x]:=((bw*(h-hfi-hfs))+(hfi*bfi)+(hfs*bfs));
PP:=(Ac[x]/1000000)*25;
Z2[x]:=((bfi*hfi*hfi/2)+(hfs*bfs*((hfs/2)+(h-hfs)))+((bw*(h-hfi-hfs))*(((h-hfi-hfs)/2)+hfi)))/(Ac[x]);
Z1[x]:=(h-(Z2[x]));
I[x]:=(((bfi*hfi*hfi*hfi)/12)+(bfi*hfi)*(((hfi/2)-Z2[x])*((hfi/2)-Z2[x])))+
(((bw*(h-hfi-hfs)*(h-hfi-hfs)*(h-hfi-hfs))/12)+(bw*(h-hfi-hfs))*(((((h-hfi-hfs)/2)+hfi)-Z2[x])*((((h-hfi-hfs)/2)+hfi)-Z2[x])))+
(((bfs*hfs*hfs*hfs)/12)+(bfs*hfs)*((((hfs/2)+h-hfs)-(Z2[x]))*(((hfs/2)+h-hfs)-(Z2[x]))));
W01[x]:=(I[x]/(-z1[x]));
W02[x]:=(I[x]/(z2[x]));
k1[x]:=(W02[x]/(Ac[x]));
k2[x]:=(W01[x]/(Ac[x]));
e[x]:=(Z2[x]-cob);
end;
Desta maneira, o programa calcularia os valores da Área, Modulo de Resistencia, Inercia, excentricidade entre outros. Como posso inserir um anexo? Desta maneira, enviaria em formato TXT, caso necessário.
10/08/2017
Igor Lisboa
Suas procedures do OnShow estão na área "private", experimente colocar no "type". Não tenho certeza que isso vai corrigir o erro, mas não custa tentar.
21/08/2017
Joao Df
ainda aparece problemas... existe uma outra opção de programação que podemos fazer para sumir com esse tabsheet e deixar algo semelhante e funcional para o usuário?!
Esses tabsheet estão me consumindo uma energia absurda que não consigo sana-las.Abração
Clique aqui para fazer login e interagir na Comunidade :)