Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   TMS Planner - Reserva de habitaciones (https://www.clubdelphi.com/foros/showthread.php?t=85424)

radenf 22-03-2014 20:27:23

Yo sólo he modificado el demo 26, por lo que el campo color se encuentra en la tabla Schedules.
El código que utilizo ya lo había puesto más arriba en el mensaje #12, pero te lo incluyo de nuevo porque le agregué la opción de bloquear una habitación.
Estos procedimientos yo los he colocado en el menú del PopUpMenu porque me parece más ordenado, pero los puedes colocar en botones si lo deseas.

Para reservar una habitación (Color verde:= $00B9FFB9)

Código Delphi [-]
procedure TFPrincipal.ReservarHabitacion1Click(Sender: TObject);
begin
ADOTable1.Active:= True;
if (ADOTable1.Fields.FieldByName ('Notes').AsString= 'Habitación bloqueada') then
begin
ADOTable1.Edit;
ADOTable1.Fields.FieldByName ('Notes').Clear;
ADOTable1.Post;
end
else
begin
dbplanner1.PopupPlannerItem.Color := $00B9FFB9;
dbplanner1.PopupPlannerItem.Update;
FillPlanner;
end;
end;

Para asignar una habitación(Color gris claro)

Código Delphi [-]
procedure TFPrincipal.AsignarHabitacion1Click(Sender: TObject);
begin
ADOTable1.Active:= True;
if (ADOTable1.Fields.FieldByName ('Notes').AsString= 'Habitación bloqueada') then
begin
ADOTable1.Edit;
ADOTable1.Fields.FieldByName ('Notes').Clear;
ADOTable1.Post;
end
else
begin
dbplanner1.PopupPlannerItem.Color := clWhite;
dbplanner1.PopupPlannerItem.Update;
FillPlanner;
end;
end;

Para bloquear una habitación(Color gris oscuro)

Código Delphi [-]
procedure TFPrincipal.BloquearHabitacion1Click(Sender: TObject);
begin
ADOTable1.Active:= True;
ADOTable1.Edit;
ADOTable1.Fields.FieldByName ('Notes').AsString:= 'Habitación bloqueada';
ADOTable1.Post;
dbplanner1.PopupPlannerItem.Color := clGray;
dbplanner1.PopupPlannerItem.Update;
FillPlanner;
end;

Para eliminar una reserva o asignación

Código Delphi [-]
procedure Pulsar(Key: Byte);
begin
keybd_event(Key, 0, 0, 0);
keybd_event(Key, 0, KEYEVENTF_KEYUP, 0);
end;

Código Delphi [-]
procedure TFPrincipal.Eliminar1Click(Sender: TObject);
begin
Pulsar(VK_DELETE);
end;

El efecto 3D de los ítems se obtiene en mi caso asignando en DefaultItem>ColorTo:= $002E2E30, que es un gris oscuro. Por supuesto tú puedes elegir los colores que más te agraden. La barra verde brillante en el margen superior de cada ítem la asignas en DefaultItem>TrackColor, colocando TrackVisible:= True.
Ya te había señalado que este componente posee cientos de opciones de configuración y de diseño y que muchas de las funciones las puedes asignar a los ítems.
Saludos amadis y ojalá haya podido ayudarte.

amadis 26-03-2014 13:26:17

Lo que me estaba faltando era en el DBPeriodSource1 un par de eventos que levantan y guardan los colores en la tabla.

Porque sin eso lo pintaba en tiempo de ejecucion pero la proxima vez perdía los colores.

Código Delphi [-]

procedure TFform1.DBPeriodSource1FieldsToItem(Sender: TObject;
  Fields: TFields; Item: TPlannerItem);
begin
  Item.Color := TColor(Fields.FieldByName('COLOR').AsInteger);
end;

procedure TFform1.DBPeriodSource1ItemToFields(Sender: TObject;
  Fields: TFields; Item: TPlannerItem);
begin
  Fields.FieldByName('COLOR').AsInteger := Integer(Item.Color);
end;


La franja horaria es GMT +2. Ahora son las 22:41:35.

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