Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   No se usar el label. Ayuda. (https://www.clubdelphi.com/foros/showthread.php?t=29860)

Sergei 02-02-2006 19:29:53

No se usar el label. Ayuda.
 
Hola, recien estoy ejercitando mi paso de Turbo Pascal a Delphi y ya tengo problemas. En mi Pascalito querido hacia algo como:


For i:= Low(Matriz) To High(Matriz) Do
Begin
Write(Matriz[i]);
Delay(1000); // mini pausa
End;


Para recorrer un simple array y mostrar su contenido, por ejemplo, 10 numeros. Quize hacer lo mismo en Delphi, pero solo "veo" el ultimo numero ingresado (10), y noo uno por uno (con intervalo de 1 segundo) como lo podia hacer con Turbo Pascal :(

No traje el codigo Delphi conmigo pero creo que era algo como :

For i:= 0 To 10 Do
Begin
Label1.Caption := IntToStr(Matriz[i]);
Sleep(1);
End;

y solo obtengo el ultimo numero en el Label.

Cómo debo hacer para colocar los numeros que se van incrementando uno al lado del otro dentro del mismo label?
Es algo muy tonto para el que ya sabe programar en Delphi, pero yo no logro encontrarle la vuelta.
Con ShowMessage si me resulta, porque me pone una por una las ventanas con el numero correspondiente, y el boton que al presionar Aceptar pasa a la otra iteraccion... Pero no es lo que busco dominar por ahora. Quiero hacer esto con un label.
Espero me hayan entendido, gracias.

roman 02-02-2006 19:38:35

En lugar de Label1.Caption := IntToStr(Matriz[i]) puedes poner

Código Delphi [-]
Label1.Caption := Label1.Caption + IntToStr(Matriz[i]);

de esta forma vas "aumentando" lo que contiene el Label.


Al margen de esto, yo te recomiendo que te olvides de una buena vez de Turbo Pascal. En lugar de tratar de pasar ejemplos de TP a Delphi, búscate un libro de Delphi y estúdialo. Estudia también los ejemplos que vienen con Delphi, pero olvídate de seguir pensando "como antes" ;)

// Saludos

seoane 03-02-2006 00:44:06

Por si tienes curiosidad tu codigo no funcionaba primero, porque mientras no sales del bucle el label no se actualiza. Y segundo pones un retrado de 1 milisegundo :D eso es un poco rapido.

Podrias probar con esto
Código:

For i:= 0 To 10 Do
  Begin
    Label1.Caption := IntToStr(Matriz[i]);
    Application.ProcessMessages;
    Sleep(500);
  End;


Sergei 06-02-2006 19:18:55

Cita:

Empezado por seoane
Por si tienes curiosidad tu codigo no funcionaba primero, porque mientras no sales del bucle el label no se actualiza. Y segundo pones un retrado de 1 milisegundo :D eso es un poco rapido.

Podrias probar con esto
Código:

For i:= 0 To 10 Do
  Begin
    Label1.Caption := IntToStr(Matriz[i]);
    Application.ProcessMessages;
    Sleep(500);
  End;


Como que el label no se actualiza hasta que no salga del Loop??? :eek:
Perdon que insista con Pascal, pero "ahi", en vez de un Label tendriamos algo
como:
For i := 1 To 10 Do
Write(Matriz[i]);

y la variable i que hace de indice, haria que se muestre todo el contenido del array, hasta que se llegue al 10.
No entiendo esto que me decis de que no se actualiza hasta salir del Loop.
Si no entendi mal, no se sale del loop hasta que este se termine. Salvo que forcemos la salida. Por otra parte, una vez que salgo del bucle FOR ya no vuelvo a este, y por lo tanto no se ejecutaria el label !!!
Que es lo que no entendi entonces ? :(

Sergei 06-02-2006 19:25:33

Cita:

Empezado por roman
Al margen de esto, yo te recomiendo que te olvides de una buena vez de Turbo Pascal. En lugar de tratar de pasar ejemplos de TP a Delphi, búscate un libro de Delphi y estúdialo. Estudia también los ejemplos que vienen con Delphi, pero olvídate de seguir pensando "como antes" ;)
// Saludos

No entendi esa parte de no seguir pensando "como antes", pero bueno, supongo que con el tiempo la entendere.
Por otra parte, no consigo libros de Delphi!! :eek:
No se de donde sos, pero en Buenos Aires, tenemos grandes cadenas de librerias (Como Cuspide y Drystal) y encontre libros de todos los lenguajes, incluso de Clipper !!!! pero ni uno de Delphi.
Bueno si, uno, pero era la version 4 :(
En una feria de mi ciudad, encontre uno usado de Delphi 5, creo que era de Francisco Charte si no me equivoco. Algo asi me serviria para empezar?
Cuspide me trae el libro de Delphi que quiera desde España, pero amen del precio se encarece por traerme algo solo para mi, tardara un mes en llegar.
Que me aconsejas Roman?

Sergei 06-02-2006 19:33:39

Cita:

Empezado por seoane
Podrias probar con esto
Código:

For i:= 0 To 10 Do
  Begin
    Label1.Caption := IntToStr(Matriz[i]);
    Application.ProcessMessages;
    Sleep(500);
  End;


Queria contarte tambien que, mi Delphi se volvio loco!
Si talcual! Tenia este codigo que ves para cargar el array, y otro bucle For para mostrar el contenido del array, bien, en el segundo bucle, pretendia mostrar el contenido del array utilizando de nuevo la variable indice i, pero reinicializandola:
For i := 1 To 10
...

Pero voy a la ventana Watch y, la variable i tenia el valor 11 !!!
Ok, me resigne, entonces cree otra variable (tambien integer) llamada k que la usaria como indice en reemplazo de i
Corro el programa de nuevo y, adivina! Si, k tambien tomaba el valor 11 !!!
Como si fuera poco, la reinicializaba ANTES de iniciar el bocle FOR.

k := 0; //al inicio del programa
For K := 1 To 10
...

Pero esto no es nada, el punto maximo de locura fue cuando, reemplace el segundo for (el que deberia mostrar el contenido del array) por un bucle While; Cuando utilice While en vez de FOR, la variable k tomo el valor 1.
Lo dicho, mi compilador se volvio loco.
(Uso Delphi 6)


La franja horaria es GMT +2. Ahora son las 23:42:19.

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