![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
Pasar de un Stringgrid a Shape
hola, hice mi programa en delphi 7 con un stringgrid pero quiero utilizar un Shape, que diferencias hay entre uno y el otro? que debo cambiar del codigo?
dejo parte de codigo, espero puedan orientarme un poco. gracias Código:
form1.StringGrid1.Visible:=true;
//por ahi despues pongo el visible al final
form1.stringGrid1.Cells[1,0]:='Inicio';
form1.stringGrid1.cells[2,0]:='Fin';
form1.stringGrid1.Cells[3,0]:='fi';
form1.stringGrid1.Cells[4,0]:='frel';
form1.stringGrid1.cells[5,0]:='facum';
form1.stringGrid1.Cells[6,0]:='Xi';
form1.stringGrid1.cells[7,0]:='(Xi*Fi)';
form1.stringGrid1.Cells[8,0]:='(Xi-X)';
form1.stringGrid1.Cells[9,0]:='((Xi-X)*Fi';
form1.stringgrid1.Cells[10,0]:='((Xi-X)²';
form1.stringGrid1.Cells[11,0]:='((Xi-X)²*Fi';
//pongo en 0 todos los valores de los intervalos
for i:=1 to form1.stringGrid1.RowCount do
begin
form1.stringGrid1.Cells[1,i]:=inttostr(0);
form1.stringGrid1.Cells[2,i]:=inttostr(0);
end;
//stringGrid1.Cells[0,i]:=inttostr(0);
//cargo los valores correspondientes a la primer fila
form1.stringGrid1.Cells[1,1]:=inttostr(strtoint(form1.edit3.Text));
form1.stringGrid1.Cells[2,1]:=inttostr(strtoint(form1.stringGrid1.Cells[1,1])+ strtoint(form1.edit6.Text)-1);
//inicializa en 0 el campo correspondiente a la frecuencia absoluta
for i:=1 to form1.stringGrid1.RowCount -1 do
begin
form1.stringGrid1.Cells[3,i]:=inttostr(0);
end;
//dimensiono el arraycito
setlength(vectorcito,form6.listbox1.Items.Count);
//inicializo a 0 y despues cargo un vector con los datos correspondientes al listbox1
for i:=0 to form6.listbox1.Count -1 do
begin
vectorcito[i]:=0;
vectorcito[i]:=strtoint(form6.listbox1.Items[i]);
end;
//es un ciclo con 2 if anidados, lo que pretendemos aca es verificar que los datos del listbox(ahora en un vector) esten en el intervalo definido,
//y contar las coincidencias, que finalmente seran las frecuencias absolutas
for i:=0 to form6.listbox1.Count -1 do
begin
if vectorcito[i] >= strtoint(form1.stringGrid1.cells[1,1]) then
if vectorcito[i] <= strtoint(form1.stringGrid1.cells[2,1]) then
form1.stringGrid1.Cells[3,1]:=inttostr(strtoint(form1.stringGrid1.cells[3,1])+1);
end;
//pongo en 0 todas las celdas correspondientes a la frecuencia relativa
for i:=1 to form1.stringGrid1.RowCount -1 do
begin
form1.stringGrid1.Cells[4,i]:=inttostr(0);
end;
//calculo las frecuencias relativas
for i:=1 to form1.stringGrid1.RowCount -1 do
begin
form1.stringGrid1.Cells[4,i]:=floattostr(strtoint(form1.stringGrid1.Cells[3,i])/strtoint(form1.edit1.Text));
end;
//inicializa en 0 el campo correspondiente a la frecuencia acumulada
for i:=1 to form1.stringGrid1.RowCount -1 do
begin
form1.stringGrid1.Cells[5,i]:=inttostr(0);
end;
//calcula la frecuencia acumulada
for i:=1 to form1.stringGrid1.RowCount -1 do
begin
form1.stringGrid1.Cells[5,i]:=inttostr(strtoint(form1.stringGrid1.Cells[5,i])+strtoint(form1.stringGrid1.Cells[3,i]));
end;
//inicializa en 0 el campo correspondiente a punto medio o Xi
for i:=1 to form1.stringGrid1.RowCount -1 do
begin
form1.stringGrid1.Cells[6,i]:=inttostr(0);
end;
//calcula el punto medio o Xi
for i:=1 to form1.stringGrid1.RowCount -1 do
begin
form1.stringGrid1.Cells[6,i]:=floattostr((strtoint(form1.stringGrid1.Cells[1,i])+strtoint(form1.stringGrid1.Cells[2,i]))/2);
end;
//inicializa en 0 el campo el intervalo de inicio
for i:=2 to form1.stringGrid1.RowCount do
begin
form1.stringGrid1.Cells[1,i]:=inttostr(0);
form1.stringGrid1.Cells[2,i]:=inttostr(0);
end;
//calcula los intervalos inicio del resto de las filas
for i:=2 to form1.stringGrid1.RowCount do
begin
form1.stringGrid1.Cells[1,i]:=inttostr(strtoint(form1.stringGrid1.Cells[1,i-1])+strtoint(form1.edit6.Text));
end;
//calculo de los intervalos fin del resto de las filas
for i:=2 to form1.stringGrid1.RowCount do
begin
form1.stringGrid1.Cells[2,i]:=inttostr(strtoint(form1.stringGrid1.Cells[1,i])+strtoint(form1.edit6.Text)-1);
end;
//calculo de la frecuencia absoluta
for i:=0 to form6.listbox1.Count -1 do
begin
vectorcito[i]:=0;
vectorcito[i]:=strtoint(form6.listbox1.Items[i]);
end;
//inicializa en 0 el campo correspondiente a la frecuencia absoluta
for i:=2 to form1.stringGrid1.RowCount do
begin
form1.stringGrid1.Cells[3,i]:=inttostr(0);
end;
//es un ciclo con 2 if anidados, lo que pretendemos aca es verificar que los datos del listbox(ahora en un vector) esten en el intervalo definido,
//y contar las coincidencias, que finalmente seran las frecuencias absolutas
for i:=2 to form1.stringGrid1.RowCount do
begin
for j:=0 to form6.listbox1.Count -1 do
begin
if vectorcito[j] >= strtoint(form1.stringGrid1.cells[1,i]) then
if vectorcito[j] <= strtoint(form1.stringGrid1.cells[2,i]) then
form1.stringGrid1.Cells[3,i]:=inttostr(strtoint(form1.stringGrid1.Cells[3,i])+1);
end;
end;
//calculo de la frecuencia relativa
for i:=2 to form1.stringGrid1.RowCount do
begin
form1.stringGrid1.Cells[4,i]:=floattostr(strtoint(form1.stringGrid1.Cells[3,i])/strtoint(form1.edit1.Text));
end;
//calculo de la frecuencia acumulada
for i:=2 to form1.stringGrid1.RowCount do
begin
form1.stringGrid1.Cells[5,i]:=inttostr(0);
end;
for i:=2 to form1.stringGrid1.RowCount do
begin
form1.stringGrid1.Cells[5,i]:=inttostr(strtoint(form1.stringGrid1.Cells[5,i-1])+strtoint(form1.stringGrid1.Cells[3,i]));
end;
//calculo de los puntos medios o xi´s
for i:=2 to form1.stringGrid1.RowCount do
begin
form1.stringGrid1.Cells[6,i]:=floattostr((strtofloat(form1.stringGrid1.Cells[1,i])+strtofloat(form1.stringGrid1.Cells[2,i]))/2);
end;
//calculo de xi * fi
for i:=1 to form1.stringGrid1.RowCount do
begin
form1.stringGrid1.Cells[7,i]:=inttostr(0);
form1.stringGrid1.Cells[7,i]:=floattostr((strtofloat(form1.stringGrid1.Cells[6,i])*strtofloat(form1.stringGrid1.Cells[3,i])));
end;
//calculo de la media aritmetica
acumulador:=0;
for i:=1 to form1.stringGrid1.RowCount -1 do
begin
acumulador:=acumulador+strtofloat(form1.stringGrid1.Cells[7,i]);
end;
form1.edit7.Text:=floattostr((acumulador)/(strtofloat(form1.edit1.Text)));
//calculo del desvio medio
acumulador:=0;
for i:=1 to form1.stringGrid1.RowCount do
begin
form1.stringgrid1.cells[8,i]:=floattostr(abs((strtofloat(form1.stringGrid1.cells[6,i])-strtofloat(form1.edit7.text))));
form1.stringgrid1.cells[9,i]:=floattostr(abs((strtofloat(form1.stringGrid1.cells[8,i])*strtofloat(form1.stringGrid1.cells[3,i]))));
acumulador:=acumulador+strtofloat(form1.stringGrid1.Cells[9,i]);
end;
form1.edit12.Text:=floattostr(acumulador / strtofloat(form1.edit1.Text));
//calculo del desvio standar
acumulador:=0;
for i:=1 to form1.stringGrid1.RowCount do
begin
form1.stringGrid1.cells[10,i]:=inttostr(0);
form1.stringGrid1.cells[11,i]:=inttostr(0);
end;
for i:=1 to form1.stringGrid1.RowCount do
begin
form1.stringGrid1.cells[10,i]:=floattostr(power(strtofloat(form1.stringGrid1.Cells[8,i]),2));
form1.stringGrid1.Cells[11,i]:=floattostr(strtofloat(form1.stringGrid1.cells[10,i])*strtofloat(form1.stringgrid1.cells[3,i]));
acumulador:=acumulador+strtofloat(form1.stringGrid1.Cells[11,i]);
end;
form1.edit11.Text:=floattostr(power(acumulador/strtofloat(form1.edit1.text),1/2));
//CALCULO VARIANZA
//Potencia := Exp(Exponente * Ln(Base));
form1.edit13.text:=floattostr(power(strtofloat(form1.edit11.text),2));
//calculo de la mediana
val_intervalo:=0;
frec_acum_menor:=0;
frec_acum_mayor:=0;
x:=0;
orden_mediana:=((strtofloat(form1.edit1.Text)+1)/2);
form1.edit10.Text:=floattostr(orden_mediana);
val_intervalo:=strtofloat(form1.edit6.Text);
intervalo_mayor:=0;
//busqueda de frecuencias mayores y menores
//copio todo en un vector
//dimensiono el array
tamanio:=form1.stringGrid1.RowCount;
setlength(vec_frec_acumulada,tamanio);
for i:=1 to form1.stringGrid1.RowCount do
begin
vec_frec_acumulada[i]:=0;
end;
for i:=1 to form1.stringGrid1.RowCount do
begin
vec_frec_acumulada[i]:=strtoint(form1.stringGrid1.cells[5,i]);
end;
for i:=1 to form1.stringGrid1.RowCount -1 do
begin
if vec_frec_acumulada[i] >= orden_mediana then
begin
frec_acum_mayor:=vec_frec_acumulada[i];
frec_acum_menor:=vec_frec_acumulada[i-1];
break;
end
end;
//busco el intervalo mayor en el cuadro
for i:=1 to form1.stringGrid1.RowCount do
begin
if frec_acum_mayor=strtoint(form1.stringGrid1.Cells[5,i]) then
begin
intervalo_mayor:=strtoint(form1.stringGrid1.Cells[1,i]);
break;
end
end;
if((frec_acum_mayor-frec_acum_menor)>0) then
begin
x:=((val_intervalo/(frec_acum_mayor-frec_acum_menor))*(orden_mediana-frec_acum_menor));
mediana:=x+intervalo_mayor;
end
else
begin
//showmessage('Los valores Ingresados son muy dispares por lo que no se puede calcular la mediana');
muestra:=form6.listbox1.Items.Count;
muestra_dividido_dos:=muestra div 2;
//showmessage(inttostr(muestra_dividido_dos));
form6.listbox1.Sorted:=true;
mediana:=strtoint(form6.listbox1.Items.Strings[muestra_dividido_dos]);
end;
form1.edit9.Text := floattostr(round(mediana));
//------------------//
//CALCULO DE LA MODA//
//------------------//
{frecmay:=strtoint(form1.stringgrid1.Cells[2,1]);
for f:=1 to strtoint(form1.edit3.text) do
if frecmay<=strtoint(form1.stringgrid1.Cells[2,f]) then
begin
frecmay:=strtoint(form1.stringgrid1.Cells[2,f]);
intermay:=strtoint(form1.stringgrid1.Cells[0,f]);
//ff:=0;
ff:=f;
end;
if ff<>1 then
interpolar3:=strtoint(form1.stringgrid1.Cells[3,ff])/(strtoint(form1.stringgrid1.Cells[3,ff])+strtoint(form1.stringgrid1.Cells[3,ff-1]))
else
interpolar3:=strtoint(form1.stringgrid1.Cells[3,ff])/(strtoint(form1.stringgrid1.Cells[3,ff]));
interpolar4:=interpolar3*strtoint(form1.edit2.text);
//edit8 =resultado de la moda
form1.edit8.text:=formatfloat('0.00',intermay+interpolar4);
//Guardo:=False;
end
else
begin
application.MessageBox('Casillero Intervalos o Números por intervalo, vacio','Error', mb_iconerror);
end; }
form6.ListBox1.Sorted:=true;
flag:=false;
i:=0;
while not(flag) do begin
val:=form6.ListBox1.Items[i];
inc(i);
j:=1;
while (i<form6.ListBox1.Items.Count) and (val = form6.ListBox1.Items[i]) do begin
inc(i);
inc(j);
end;
flag := i=form6.ListBox1.Items.Count;
if length(moda)>0 then begin
if moda[0,2]=j then begin
SetLength(moda, length(moda)+1);
moda[length(moda)-1,1]:=strtoint(val);
moda[length(moda)-1,2]:=j;
end
else
if moda[0,2]<j then begin
SetLength(moda, 1);
moda[length(moda)-1,1]:=strtoint(val);
moda[length(moda)-1,2]:=j;
end;
end
else
begin
SetLength(moda, length(moda)+1);
moda[length(moda)-1,1]:=strtoint(val);
moda[length(moda)-1,2]:=j;
end;
end;
val:='';
for i:=0 to length(moda)-1 do
val:= val + inttostr(moda[i,1])+', ';
//ShowMessage('Moda: '+val+' con '+inttostr(moda[0,2])+' incidencias');
//edit8.text:='Moda: '+val+' con '+inttostr(moda[0,2])+' repeticiones';
form1.edit8.text:=val;
form1.label15.Caption :=' Con '+inttostr(moda[0,2])+' repeticiones';
for i:=1 to form1.stringGrid1.RowCount -1 do
begin
if strtoint(form1.stringGrid1.Cells[3,i])=0 then
begin
showmessage('Existen frecuencias absolutas iguales a 0, esto puede deberse a que haya valores fuera de rango o que la muestra no es demasiado significativa');
break;
end;
end;
form1.Show;
Form6.Hide;
end;
end;
|
|
#2
|
||||
|
||||
|
Hola.
A grandes rasgos: El TShape es un componente que permite dibujar formas geométricas simples en el Form, mientras que el TStringGrid es un componente que permite el manejo de datos que se representan en columnas y filas (formato tabular). Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 17-02-2011 a las 03:46:23. |
|
#3
|
||||
|
||||
|
Pues estoy con ecfisa. Un TShape y un TStringGrid se parecen, como el tocino y la velocidad...
![]() ![]() O te has equivocado en el nombre del componente o no me explico cómo vas meter el contenido de un TStringGrid en un TShape. ![]()
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Pasar datos de un edit a un stringgrid | Franksxs | Varios | 3 | 30-01-2010 23:43:28 |
| Mensaje al pasar el mouse por una celda de un Stringgrid | mancurnino | Varios | 4 | 23-05-2008 16:40:08 |
| Shape en DetailBand | TONIAM | Impresión | 1 | 25-10-2005 17:59:24 |
| pasar contenido de un Edit a una celda StringGrid | sakuragi | OOP | 4 | 29-06-2005 06:05:32 |
| Pasar el valor de un TEdit dentro de un StringGrid a otro TEdit que está fuera | atirado | Varios | 4 | 11-09-2004 19:13:48 |
|