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 |
|