Ver Mensaje Individual
  #5  
Antiguo 16-01-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Reputación: 19
Deiv Va por buen camino
Gracias Lepe!,
vuestras sugerencias los revisaré llegando a casa, estoy en un Cibercafe.

Para Gunman:

Hable de los Labels Unidos inicialmente para mostrar la FORMULA QUIMICA (digamos SALES). Realizo el cálculo de los subíndices, y le digo al programa si viene o no con paréntesis? o sea, por dar un par de ejemplos: K2SO4 (sin paréntesis) Fe2(SO4)3 (con paréntesis).

Pero si volvemos a observar, por ejemplo en 'Fe2(SO4)3' los subíndices 2 y 3 NO SE VEN COMO SUBÍNDICES, y los paréntesis COMO que NO ESTÁN AL MEDIO. Por ello necesitaba dibujar cada Label ADYACENTE (unidos) cada uno pero con diferentes TOP. Ejemplo, después del cálculo para Fe2(SO4)3:

- Primero alineo todos los TOP = 100 (a uno mismo)

//E = Elemento, s1 = 1er subíndice, r1 = Radical, s2 = 2do subíndice, y s3 = 3er subíndice

Label1.Caption:=E; Label1.left:= 50; //Elemento='Fe'
Label2.Caption:=s1; Label2.left:= Label1.Left+Label1.width;
Label2.Top:=110; //como subíndice(mas abajo)='2'

Label3.Caption:='('; Label3.left:= Label2.Left+Label2.width;
Label3.Top:=103; //mas abajito

Label4.Caption:=r1; Label4.left:= Label3.Left+Label3.width; //Radical='SO'

Label5.Caption:=s2; Label5.left:= Label4.Left+Label4.width;
Label5.Top:=110; //como subíndice(mas abajo)='4'

Label6.Caption:=')'; Label6.left:= Label5.Left+Label5.width;
Label6.Top:=103; //mas abajito

Label7.Caption:=s3; Label7.left:= Label6.Left+Label6.width;
Label7.Top:=110; //como subíndice(mas abajo)='3'

Esa era la idea, eso de los Left y Top, estoy adivinando ya que en este momento no tengo Delphi a mano, el mismo código lo estoy sacando de la cabeza a recordatorio por si notan errores.

La situación es que cuando el programa calcule OTRO, por ejemplo para K2SO4, no existe paréntesis ni "algunos" subíndices, entonces tendré que indicarle:

Label3.Width:=0;
Label6.Width:=0;
Label7.Width:=0;

Ya que si coloco = ' ' (nada) Delphi aún así me coloca un cierto ancho para mostrame los Labels.
¡Todo bien pero............. al volver digamos a calcular el mismo: Fe2(SO4)3 Ya no me muestra los Labels '(' , ')' y '3' obvio porque anteriormente Width los puse a = 0 (cero) verdad?.

De ahí nació mi pregunta en el Foro de como solucionar esta situación, por lo que crei conveniente mejor mostrar en un PaintBox.

Revisaré el ejemplo de Lepe, aunque mi experiencia como novato no me queda claro todavía.
¿Alguna otra sugerencia?
Gracias.
Responder Con Cita