Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   muchachos and muchachas ayuda por favor.. (https://www.clubdelphi.com/foros/showthread.php?t=71589)

guly 29-12-2010 16:09:18

muchachos and muchachas ayuda por favor..
 
antes que nada me presento me llamo gaston tengo 67 años y trabajo en el area de computos de la municipalidad de miramar...
estoy empezando a ver delphi para un proyecto... les comento que programo en perl, php, html...

mi pregunta es hacias ustedes estoy haciendo un codigo que lo que quiero que haga es que me cambia el color de un boton lmd button segun compare la fecha, mi problema es que los botonoes se llamas del c1 al c78 y luego comienzan c1b a c15b y luego siguen del c62b al c73b..
un enrosque pense este codigo mi problema es que funciona si le escribo el boton

c1.color:=clyellow;
por ejemplo si anda pero no se como hacer para rotarlo...
les paso el codigo estoy abiertoa cualquier consulta ya que de preguntar se aprende... saludos

Código Delphi [-]
procedure Tformcc.FormCreate(Sender: TObject);
var
   num:integer;
   carpa,nume:string;
   hoy,compara:tdate;
   fecha1,fecha2:string;
begin
      //muestro la fecha actual dd/mm/yyyy
      hoy:=date();
      fecha1:=datetostr(hoy);
      //showmessage(fecha1) ;
       /////////
       num:=1;
     while mytablerevisa.eof <> true do
      begin
       nume:=inttostr(num);
       carpa:=('c'+nume);
       compara := MyTablerevisa.FieldByName('fecha_fin').asdatetime;
       fecha2 := datetostr(compara);
           if fecha1 <> fecha2 then
             begin
             //showmessage('Son distintos    '+ fecha1 +' <> '+ fecha2);
            //carpa es una concatenacion de texto que termina escribiendome el nombre del boton y rotando pero no anda!!!! 
            (carpa).Color:=cllime;
             mytablerevisa.Next;
             end
           else
             begin

            // showmessage('Son iguales    '+ fecha1 +' = '+ fecha2);
             (carpa).Color:=clyellow;
             mytablerevisa.Next;
             end


            num:=num+1;


      end
end;


me falta saber como hacerlo girar en tre todos los botones... saludos

Caral 29-12-2010 16:23:28

Hola
1-Veo que sacas la fecha de una tabla, pero no veo donde la abres.
2-Veo que haces el recorrido de la variable nume, sin embargo no la veo relacionada al boton, que en este caso es un componente.
En otras palabras, este codigo no puede hacer lo que requieres, se necesita recorrer los componentes para que se haga la comparacion y el cambio de color, que creo solo sera de la letra, no del boton.
Para mi seria mejor usar un panel o un boton dentro del panel, para el efecto que quieres.
Saludos

guly 29-12-2010 16:36:34

Cita:

Empezado por Caral (Mensaje 386124)
Hola
1-Veo que sacas la fecha de una tabla, pero no veo donde la abres.
2-Veo que haces el recorrido de la variable nume, sin embargo no la veo relacionada al boton, que en este caso es un componente.
En otras palabras, este codigo no puede hacer lo que requieres, se necesita recorrer los componentes para que se haga la comparacion y el cambio de color, que creo solo sera de la letra, no del boton.
Para mi seria mejor usar un panel o un boton dentro del panel, para el efecto que quieres.
Saludos

1-la fecha la tome del sistema... tengo un datetimepicker ocuto y tomo la fecha de hoy ahi esta aclarado esa parte...
2-esa parte como hago para relacionar la variable al boton, mi idea es que cuando pongo
carpa.color:=clyellow;

lo que quiero reemplazar con la variable carpa es el nombre del lmdbutton...

pero no se me ocurre como reemplazarlar yo en php y perl concateno propiedades y cuando compilo me lo toma como si fuera por ejemlo c1,c2,c3,c4,etc.....

no se si me llego a explicar......

los componentes lmdbutton tienen la propiedad de cambiar el color del boton los botones comunes son los que no los tienen..

saludos

Casimiro Noteví 29-12-2010 16:38:30

Bienvenido a clubdelphi, por favor, lee nuestra guía de estilo, muchas gracias por tu colaboración... y no repitas temas ;)

Caral 29-12-2010 16:43:34

Hola
No entiendo.
La concatenacion esta bien, pero no entiendo que hace mytablerevisa, si no es sacar la fecha de una tabla, no lo entiendo.
Para mi se necesita recorrer los componentes (botones) y ahi hacer que cambien segun una condicion, que en este caso me da la impresion de que es si la fecha es diferente que la del sistema.
Bueno, no entiendo, seguro alguien mas lo entendera no te preocupes.
Saludos

guly 29-12-2010 16:51:04

Cita:

Empezado por Caral (Mensaje 386127)
Hola
No entiendo.
La concatenacion esta bien, pero no entiendo que hace mytablerevisa, si no es sacar la fecha de una tabla, no lo entiendo.
Para mi se necesita recorrer los componentes (botones) y ahi hacer que cambien segun una condicion, que en este caso me da la impresion de que es si la fecha es diferente que la del sistema.
Bueno, no entiendo, seguro alguien mas lo entendera no te preocupes.
Saludos

disculpen si no me di a entender es un sistema de alquiler de carpas en la cual cada boton es una carpa y yo quiero que si la carpa esta alquilada me ponga el boton de un color y sino de otro...
mytable revisa es una llamada a una tabla de la base de datos en la cual ya previamente se alquilo algo y tiene un campo fecha_inicio y fecha _fin, lo que me interesaria a mi es que esa fecha_fin compararla con la del sistema, es decir la de hoy, y de ahi recorrer los botones y ir cambiandoles el color segun sea necesario

saludos...

Neftali [Germán.Estévez] 29-12-2010 17:38:30

Por lo que yo he entendido en la variable carpa tienes el nombre del botón al que deseas cambiarle el color (o cualquier otra propiedad). E intentas hacer una cosa como esta para cambiarle el nombre:

Código Delphi [-]
(carpa).Color:=cllime;
En delphi esto no funciona, pero sí se puede hacer; Basta con utilizar la función FindComponent, que te permite acceder a un componente a partir de su nombre; Por ejemplo, si estás utilizando un TPanel sería:

Código Delphi [-]
var
   pnl:TPanel;
   carpa:string;
   cmp:TComponent;
...
begin
   // supongamos que en carpa está el nombre.
   cmp := FindComponent(carpa);
   // Está Asignado?  (significa que lo ha encontrado)
   if Assigned(cmp) then begin
      pnl := Tpanel(cmp);
      pnl.color := clYellow;
   end;

Te lo he hecho paso a paso para que veas claras las operaciones; Si en lugar de un Tpanel es un TEdit se hace similar; Basta con cambiar el componente por otro de otro tipo.

En tu caso podría ser:

Código Delphi [-]
// en lugar de:
(carpa).Color:=cllime; 
// sería (dependiendo del componente que estés usando)
TEdit(FindComponent(carpa)).Color := clLime;
TLabel(FindComponent(carpa)).Color := clLime;
TButoon(FindComponent(carpa)).Color := clLime;
TPanel(FindComponent(carpa)).Color := clLime;

Si buscas en los foros sobre Findcomponent encontrarás muchos más ejemplos.

Aleca 30-12-2010 16:55:45

Por las dudas, ojo que si usas un TButton no tiene la propiedad Color.

guly 31-12-2010 02:07:53

gracias a todos ya lo aregle el lmd button no tenia esa funcion FindComponent asi que lo aregle con varias consultas individuales, desde ya muchas gracias y disculpen las molestias y gracias por las ideas seguro me iran surguiendo un par mas saludos desde miramar

Neftali [Germán.Estévez] 31-12-2010 02:30:34

FindComponent no pertenece a ningun componente. Es una función de Delphi a la cual le pasas como parámetro una cadena y busca entre los componentes existentes si hay alguno con ese nombre.


La franja horaria es GMT +2. Ahora son las 05:20:09.

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