Ver Mensaje Individual
  #9  
Antiguo 24-01-2007
SyncReuter SyncReuter is offline
Miembro
 
Registrado: ene 2007
Posts: 26
Reputación: 0
SyncReuter Va por buen camino
Bueno aqui estamos de nuevo. Les cuesto. Agrege el siguiente procedimiento a la clase en la sección protected

Código Delphi [-]
Procedure CreateWnd; Override;

con el siguiente codigo:

Código Delphi [-]
procedure TPrcMonthCalendar.CreateWnd;
begin
  inherited;
  AjustWH;
  CreateObjects;
end;

...Las etiquetas se crearon de la siguiente forma:

Código Delphi [-]
x:=5;
  y:=21;

  for i:=1 to 7 do
    begin
      FLabD[i]:=TLabel.Create(Self);
      with FLabD[i] do
        begin
          Name:='Lab'+IntToStr(i);
          FLabD[i].Parent:=Self;
          Caption:=CA_D[i];
          AutoSize:=True;
          Alignment:=taCenter;
          Transparent:=True;
          Left:=x;
          Top:=y;
          Width:=21;
          Height:=13;
          inc(x, Width + 2);
        end;
    end;

Ahora todo funciona a la perfección . Para terminar debo señalar lo siguiente. Al momento de alterar las propiedades de las etiquetas y botones internos del componente se producia un error grave en delphi, observando la clase completamente me doy cuenta que tenia un procedimiento dentro de Paint que alteraba las propiedades de las etiquetas y botones la cual es necesario para el cambio de estilo del calendario, entonces...para alterar las propiedades (utilizando For... para recorrer el array) coloque una bifurcación if..then preguntando si el elemento contenido en el array era <> a nil... como lo indico en la fracción de codigo:

Código Delphi [-]
for i:=1 to 42 do
    if FBtnD[i]<>nil then
      with FBtnD[i] do
        begin
          GetBtnStateData(TD_MONTHCALENDAR_DM_NORMAL_BSTATE, StateNormal);
          GetBtnStateData(TD_MONTHCALENDAR_DM_FOCUS_BSTATE, StateFocus);
          GetBtnStateData(TD_MONTHCALENDAR_DM_DISABLED_BSTATE, StateDisabled);
          GetBtnStateData(TD_MONTHCALENDAR_DM_DOWN_BSTATE, StateDown);
        end;

...con ello ahora el control se puede colocar dentro de la form sin causar problema alguno...al = que al momento de quitarlo.

La destrucción de los controles internos se genero justo antes de ejecutar el inherited Destroy;



Bueno no me queda mas que AGRADECER a cada uno de ustedes por sus lineas. Desde Chile reciban un gran abrazo.

GRACIAS!!!
Responder Con Cita