Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-02-2011
teto89 teto89 is offline
Registrado
NULL
 
Registrado: dic 2010
Posts: 3
Poder: 0
teto89 Va por buen camino
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;
Responder Con Cita
  #2  
Antiguo 17-02-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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 04:46:23.
Responder Con Cita
  #3  
Antiguo 17-02-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Pasar datos de un edit a un stringgrid Franksxs Varios 3 31-01-2010 00:43:28
Mensaje al pasar el mouse por una celda de un Stringgrid mancurnino Varios 4 23-05-2008 17:40:08
Shape en DetailBand TONIAM Impresión 1 25-10-2005 18:59:24
pasar contenido de un Edit a una celda StringGrid sakuragi OOP 4 29-06-2005 07:05:32
Pasar el valor de un TEdit dentro de un StringGrid a otro TEdit que está fuera atirado Varios 4 11-09-2004 20:13:48


La franja horaria es GMT +2. Ahora son las 20:29:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi