Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2013
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Question ¿componente de mapa de mesas para restaurante?

Hola

¿Saben si hay componentes de mapas de mesas. ?

es decir, que pueda colocar mesas, en una imagen,

solo he encontrado el de este sitio

http://neftali.clubdelphi.com/?p=269...#comment-18237

gracias.
Responder Con Cita
  #2  
Antiguo 20-10-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Hola JXJ, yo estoy usando algo parecido pero lo que situó son un Speedbutton adaptados para TPV, si te interesa te comento algo más
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #3  
Antiguo 20-10-2013
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
eso suena interesante, yo pensaba en poner timage de fondo y poner otros timage para las mesas,

Si me interesa, comenta un poco mas.


Tambien recuerdo que por ahi vi unos componentes parecidos para poner mesas.. del nombre no recuerdo.
Gracias.

[José Luis Garcí]
Responder Con Cita
  #4  
Antiguo 21-10-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Hola JXJ, en primer lugar te encontraras con componentes que encontraras en el club, están este y este, a continuación te pongo 2 imágenes y el código de cada modulo, el 1º es crear plano, te lo pondré en dos respuesta por el limite de tamaño. Es importante que tengas en cuenta que no están terminados pero puedes hacerte una idea, de como queda +/-



Código Delphi [-]
unit UCrearPlano;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBCtrls, Grids, DBGrids, StdCtrls, Buttons, SPBBC, ExtCtrls, DB,
  IBCustomDataSet, IBQuery,  ExtDlgs, Clipbrd, SBTPV, UCCDBaseComp,
  UCCDSelectOnRunTime, Mneweditjl, NewSpinEdit, IniFiles;

type
  TFCrearPlano = class(TForm)
    Panel2: TPanel;
    Imagen: TImage;
    Panel3: TPanel;
    Panel1: TPanel;
    ButSalir: TSpeedButtonBC;
    Label1: TLabel;
    ButCargarImagenLibre: TSpeedButtonBC;
    Label2: TLabel;
    ButSeleccionarPlano: TSpeedButtonBC;
    ButCrearElemento: TSpeedButtonBC;
    DBGrid1: TDBGrid;
    DBGrid2: TDBGrid;
    DBNavigator1: TDBNavigator;
    DSSituacion: TDataSource;
    DBNavigator2: TDBNavigator;
    DSUbicacion: TDataSource;
    IBQUbicacion: TIBQuery;
    OpenPictureDialog1: TOpenPictureDialog;
    SpeedButtonTPV1: TSpeedButtonTPV;
    ButBajar: TSpeedButtonBC;
    ButSubir: TSpeedButtonBC;
    ButDerecha: TSpeedButtonBC;
    ButIzquierda: TSpeedButtonBC;
    Saltos: TNewSpinEdit;
    DsTipo: TDataSource;
    DBImage1: TDBImage;
    ButCrearTodosLosElementos: TSpeedButtonBC;
    ButDestruirElemento: TSpeedButtonBC;
    TamanoButon: TNewSpinEdit;
    Label5: TLabel;
    Label6: TLabel;
    ButGrabarConfiSituacion: TSpeedButtonBC;
    CheckBox1: TCheckBox;
    procedure ButSeleccionarPlanoClick(Sender: TObject);
    procedure ButCargarImagenLibreClick(Sender: TObject);
    procedure ButCrearElementoClick(Sender: TObject);
    procedure ButDerechaClick(Sender: TObject);
    procedure ButIzquierdaClick(Sender: TObject);
    procedure ButSubirClick(Sender: TObject);
    procedure ButBajarClick(Sender: TObject);
    procedure ButDestruirElementoClick(Sender: TObject);
    procedure ButCrearTodosLosElementosClick(Sender: TObject);
    procedure SpeedButtonTPV1Click(Sender: TObject);
    procedure MiOnClick(Sender: TObject);
    procedure ButGrabarConfiSituacionClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ButSalirClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FCrearPlano: TFCrearPlano;
  VarSNameComp:string;
  dir, Fichero: string;              //Directorio po
  ini: TIniFile;          //Archivo Ini

implementation

{$R *.dfm}

uses UDM, Fun;

function CaseOfString(s: string; a: array of string): Integer;
//------------------------------------------------------------------------------
// Para usar String en un case
// Bajada de http://www.swissdelphicenter.ch/torr...de.php?id=2330
//  01/10/2013
{//Ejemplo--------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
  case CaseOfString(Edit1.Text, ['42', '23', 'nerd alert', 'hello world']) of
    0: Label1.Caption := 'What is six times nine?';
    1: Label1.Caption := 'Nichts ist, wie es scheint...';
    2: Label1.Caption := 'BATMAAAAAAAN!';
    3: Label1.Caption := 'Hello people.';
    else
      Label1.Caption := '?';
  end;
end;}
//------------------------------------------------------------------------------
begin
  Result := 0;
  while (Result < Length(a)) and (a[Result] <> s) do
    Inc(Result);
  if a[Result] <> s then
    Result := -1;
end;


procedure TFCrearPlano.MiOnClick(Sender: TObject);
begin
   VarSNameComp:=(Sender as TSpeedButtonTPV).Name;
   Panel3.Caption:='Elemento seleccionado:= [  '+VarSNameComp+'  ]';
end;

procedure TFCrearPlano.ButCargarImagenLibreClick(Sender: TObject);
begin
  if OpenPictureDialog1.Execute then
  begin
    Fichero:=OpenPictureDialog1.FileName;
    Imagen.Picture.LoadFromFile(OpenPictureDialog1.FileName);
  end;
end;



procedure TFCrearPlano.ButSeleccionarPlanoClick(Sender: TObject);
var i,VarIContadorLista:Integer;
    varStipo:string;
    Lista:TList;
    sl: TStringList;
begin
    ActQuery(IBQUbicacion,'Select * From UBICADOS where SITUACION='+QuotedStr(DSSituacion.DataSet.FieldByName('SITUACION').AsString));
    Caption:='Crear Plano [ '+ DSSituacion.DataSet.FieldByName('SITUACION').AsString+' ]';
    sl := TStringList.Create;
    try
      for i:= 0 to (Panel2.ControlCount - 1) do   //Contamos el número de speedbutton
      begin
         if Panel2.Controls[i] is TImage  then TImage(Panel2.Controls[i]).Picture:=nil;
         if (Panel2.Controls[i] is TSpeedButtonTPV) then Sl.Add((Panel2.Controls[i]).Name); //TSpeedButtonTPV(Panel2.Controls[i]).Free;
      end;
      for I := 0 to sl.Count - 1 do
      begin
//         ShowMessage(sl[i]);
        (FindComponent(sl[i]) as TSpeedButtonTPV).Free;
      end;
     finally
      sl.Free;
    end;
    dir := ExtractFilePath(ParamStr(0));
    if FileExists(dir + DSSituacion.DataSet.FieldByName('SITUACION').AsString +'.ini') then
    begin
       ini := TIniFile.Create(dir + DSSituacion.DataSet.FieldByName('SITUACION').AsString +'.ini');
       Imagen.Picture.LoadFromFile(ini.ReadString('Plano','Fichero',''));
       for I := 0 to ini.ReadInteger('Statup','Numero de elementos',0)-1 do     //Quitar el 0 en   Statup0
       begin
         with TSpeedButtonTPV.Create(SElf)do
         begin
           Name:=ini.ReadString('Boton'+inttostr(I),'Name','');
           Parent:=Panel2;
           Width:=ini.ReadInteger('Boton'+inttostr(I),'Width',0);
           Height:=ini.ReadInteger('Boton'+inttostr(I),'Height',0);
           Top:=ini.ReadInteger('Boton'+inttostr(I),'Top',0);
           Left:=ini.ReadInteger('Boton'+inttostr(I),'Left',0);
           ButonStyle:=SbtImagenColor;
           ImagenTop:=ini.ReadInteger('Boton'+inttostr(I),'ImagenTop',0);
           ImagenLeft:=ini.ReadInteger('Boton'+inttostr(I),'ImagenLeft',0);
           ImageLong:=ini.ReadInteger('Boton'+inttostr(I),'ImageLong',0);
           LeftQuad:=ini.ReadInteger('Boton'+inttostr(I),'LeftQuad',0);
           LongQuad:=ini.ReadInteger('Boton'+inttostr(I),'LongQuad',0);
           case ini.ReadInteger('Boton'+inttostr(I),'MYType',0) of
             0:begin
            MYType:=MMesa;
                  varStipo:='MMesa';
               end;
             1:begin
                  MYType:=MTaburete;
                  varStipo:='MTaburete';
               end;
             2:begin
                 MYType:=MTerraza;
                 varStipo:='MTerraza';
               end;
             3:begin
                 MYType:=MBanco;
                 varStipo:='MBanco';
               end;
             4:begin
                 MYType:=MSofa;
                 varStipo:='MSofa';
               end;
             5:begin
                 MYType:=Motros;
                 varStipo:='Motros';
               end;
           end;
           ColorUsed:=clLime;
           UsedQuad:=True;
            if DsTipo.DataSet.Locate('MTIPOS',varStipo,[loPartialKey,loCaseInsensitive]) then Glyph:=DBImage1.Picture.Bitmap;
           OnClick:=MiOnClick;  //Asignamos el evento creado, para ello
         end;
       end;
    end;
end;

procedure TFCrearPlano.ButCrearElementoClick(Sender: TObject);

begin
   VarSNameComp:='But'+DSUbicacion.DataSet.FieldByName('TIPO').AsString+DSUbicacion.DataSet.FieldByName  ('CODIGO').AsString;
   if not ((FindComponent(VarSNameComp) as TSpeedButtonTPV).Caption=VarSNameComp ) then
   begin
       with TSpeedButtonTPV.Create(SElf)do
       begin
         Name:=VarSNameComp;
         Parent:=Panel2;
         Width:=TamanoButon.Value;
         Height:=TamanoButon.Value;
         Top:=0;
         Left:=0;
         ButonStyle:=SbtImagenColor;
         ImagenTop:=10;
         ImagenLeft:=10;
         ImageLong:=TamanoButon.Value-17;
         LeftQuad:=Width-15;
         LongQuad:=Width div 4;
         if DsTipo.DataSet.Locate('CODIGO',DSUbicacion.DataSet.FieldByName('TIPO').AsString,[loPartialKey,loCaseInsensitive]) then Glyph:=DBImage1.Picture.Bitmap;
         case CaseOfString(DsTipo.DataSet.FieldByName('MTIPOS').AsString,['MBanco','Motros','MMesa','MSofa','MTaburete','MTerraza']) of
           0:MYType:=MBanco;
           1:MYType:=Motros;
           2:MYType:=MMesa;
           3:MYType:=MSofa;
           4:MYType:=MTaburete;
           5:MYType:=MTerraza;
         end;
         ColorUsed:=clLime;
         UsedQuad:=True;
         OnClick:=MiOnClick;  //Asignamos el evento creado, para ello
       end;
       Panel3.Caption:='Elemento seleccionado:= [  '+VarSNameComp+'  ]';
       if CheckBox1.Checked then DSUbicacion.DataSet.Next;

   end else ShowMessage('Ya existe');
end;

procedure TFCrearPlano.ButSalirClick(Sender: TObject);
begin
  Close;
end;

procedure TFCrearPlano.ButBajarClick(Sender: TObject);
begin
   if not ((FindComponent(VarSNameComp) as TSpeedButtonTPV).Caption=VarSNameComp ) then
   begin
      (FindComponent(VarSNameComp) as TSpeedButtonTPV).Top:=(FindComponent(VarSNameComp) as TSpeedButtonTPV).Top+Saltos.Value;
   end;
end;

procedure TFCrearPlano.ButSubirClick(Sender: TObject);
begin
   if not ((FindComponent(VarSNameComp) as TSpeedButtonTPV).Caption=VarSNameComp ) then
   begin
      (FindComponent(VarSNameComp) as TSpeedButtonTPV).Top:=(FindComponent(VarSNameComp) as TSpeedButtonTPV).Top-Saltos.Value;
   end;
end;

procedure TFCrearPlano.ButDerechaClick(Sender: TObject);
begin
   if not ((FindComponent(VarSNameComp) as TSpeedButtonTPV).Caption=VarSNameComp ) then
   begin
      (FindComponent(VarSNameComp) as TSpeedButtonTPV).Left:=(FindComponent(VarSNameComp) as TSpeedButtonTPV).Left+Saltos.Value;
   end;
end;

procedure TFCrearPlano.ButIzquierdaClick(Sender: TObject);
begin
   if not ((FindComponent(VarSNameComp) as TSpeedButtonTPV).Caption=VarSNameComp ) then
   begin
      (FindComponent(VarSNameComp) as TSpeedButtonTPV).Left:=(FindComponent(VarSNameComp) as TSpeedButtonTPV).Left-Saltos.Value;
   end;
end;

procedure TFCrearPlano.SpeedButtonTPV1Click(Sender: TObject);
begin
   VarSNameComp:=TSpeedButtonTPV(Sender).Name;
end;

procedure TFCrearPlano.ButCrearTodosLosElementosClick(Sender: TObject);
begin
    DSUbicacion.DataSet.First;
    while not DSUbicacion.DataSet.Eof do
    begin
       ButCrearElementoClick(Sender);
       DSUbicacion.DataSet.Next;
    end;
end;

procedure TFCrearPlano.ButDestruirElementoClick(Sender: TObject);
begin
   (FindComponent(VarSNameComp) as TSpeedButtonTPV).Free;
end;

procedure TFCrearPlano.ButGrabarConfiSituacionClick(Sender: TObject);
var
   Ruta:string;
   VerMEmo: Boolean;    //Al grabar en el Ini Será 1 para true y 0 para false
   Ancho: Integer;
   Fecha: TDate;
   Hora: TTime;
   ButonStile:Integer;
   i,o,U, mitipo: Integer;
begin


    ///Falta al grabar si no hay imaghen del plano poner none y al leerlo dejarlo en blanco


   o:=0;
   u:=0;
   for i:= 0 to Panel2.ControlCount - 1 do   //Contamos el número de speedbutton
   begin
      if Panel2.Controls[i] is TSpeedButtonTPV then U:=U+1;
   end;
   dir := ExtractFilePath(ParamStr(0));
   ini := TIniFile.Create(dir + DSSituacion.DataSet.FieldByName('SITUACION').AsString +'.ini');    //Cremoas El Ini si no existe
   try
      ini.WriteString('Startup', 'Rutap', dir);                  //Valor = a dir
      ini.WriteDate('Statup','Fecha',Now);                       //Fecha de grabación
      ini.WriteInteger('Statup','Numero de elementos',U);
      if Fichero<>'' then ini.WriteString('Plano','Fichero',Fichero);
      for i:= 0 to Panel2.ControlCount - 1 do
      begin
         if Panel2.Controls[i] is TSpeedButtonTPV then
         begin
            ini.WriteString('Boton'+inttostr(o),'Name',Panel2.Controls[i].Name);
            ini.WriteInteger('Boton'+inttostr(o),'Width',Panel2.Controls[i].Width);
            ini.WriteInteger('Boton'+inttostr(o),'Height',Panel2.Controls[i].Height);
            ini.WriteInteger('Boton'+inttostr(o),'Top',Panel2.Controls[i].Top);
            ini.WriteInteger('Boton'+inttostr(o),'Left',Panel2.Controls[i].Left);
            ini.WriteInteger('Boton'+inttostr(o),'ImagenTop',(FindComponent(Panel2.Controls[i].Name) as TSpeedButtonTPV).ImagenTop );
            ini.WriteInteger('Boton'+inttostr(o),'ImagenLeft',(FindComponent(Panel2.Controls[i].Name) as TSpeedButtonTPV).ImagenLeft);
            ini.WriteInteger('Boton'+inttostr(o),'ImageLong',(FindComponent(Panel2.Controls[i].Name) as TSpeedButtonTPV).ImageLong);
            ini.WriteInteger('Boton'+inttostr(o),'LeftQuad',(FindComponent(Panel2.Controls[i].Name) as TSpeedButtonTPV).LeftQuad);
            ini.WriteInteger('Boton'+inttostr(o),'LongQuad',(FindComponent(Panel2.Controls[i].Name) as TSpeedButtonTPV).LongQuad);
            mitipo:=-1;
            if (FindComponent(Panel2.Controls[i].Name) as TSpeedButtonTPV).MYType=MMesa then mitipo:=0;
            if (FindComponent(Panel2.Controls[i].Name) as TSpeedButtonTPV).MYType=MTaburete then mitipo:=1;
            if (FindComponent(Panel2.Controls[i].Name) as TSpeedButtonTPV).MYType=MTerraza then mitipo:=2;
            if (FindComponent(Panel2.Controls[i].Name) as TSpeedButtonTPV).MYType=MBanco then mitipo:=3;
            if (FindComponent(Panel2.Controls[i].Name) as TSpeedButtonTPV).MYType=MSofa then mitipo:=4;
            if (FindComponent(Panel2.Controls[i].Name) as TSpeedButtonTPV).MYType=Motros then mitipo:=5;
            ini.WriteInteger('Boton'+inttostr(o),'MYType',mitipo);
            o:=o+1;
         end;
      end;
      ShowMessage('Archivo creado');
   finally
      ini.Free;
   end;
end;

procedure TFCrearPlano.FormCreate(Sender: TObject);
begin
  Fichero:='';
end;

end.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #5  
Antiguo 21-10-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
La segunda parte, el plano en si



Código Delphi [-]
unit UPlano;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, SBTPV, StdCtrls, Buttons, SPBBC,
  ExtDlgs, DB, IBCustomDataSet, IBQuery, IniFiles, AdvSmoothSpinner,
  MiPanelTouchInteger, LMDPNGImage;

type
  TFPlano = class(TForm)
    Panel1: TPanel;
    butSalir: TSpeedButtonBC;
    Label1: TLabel;
    Label2: TLabel;
    ButSeleccionarPlano: TSpeedButtonBC;
    SpeedButtonTPV1: TSpeedButtonTPV;
    DBGrid1: TDBGrid;
    DBNavigator2: TDBNavigator;
    DBImage1: TDBImage;
    Panel2: TPanel;
    Imagen: TImage;
    DSUbicacion: TDataSource;
    IBQUbicacion: TIBQuery;
    DsTipo: TDataSource;
    DSSituacion: TDataSource;
    OpenPictureDialog1: TOpenPictureDialog;
    Shape1: TShape;
    Shape2: TShape;
    clpurple: TShape;
    Shape4: TShape;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    PAnel3: TPanel;
    ButReservar: TSpeedButtonBC;
    ButUnir: TSpeedButtonBC;
    lb1580: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    LabUbicacion: TLabel;
    LabCamarero: TLabel;
    LabOcupantes: TLabel;
    LabTicket: TLabel;
    LabID: TLabel;
    GroupBox2: TGroupBox;
    ButOcupantes1: TSpeedButtonBC;
    ButOcupantes2: TSpeedButtonBC;
    ButOcupantes3: TSpeedButtonBC;
    ButOcupantes4: TSpeedButtonBC;
    MemInformacion: TMemo;
    Contador: TPanelTouchInteger;
    procedure ButSeleccionarPlanoClick(Sender: TObject);
    procedure MiOnClick(Sender: TObject);
    procedure ButReservarClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ButUnirClick(Sender: TObject);
    procedure butSalirClick(Sender: TObject);
    procedure ButOcupantes1Click(Sender: TObject);
    procedure ButOcupantes2Click(Sender: TObject);
    procedure ButOcupantes3Click(Sender: TObject);
    procedure ButOcupantes4Click(Sender: TObject);
    Procedure Mouseenter(sender:TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FPlano: TFPlano;
  VarSNameComp:string;
  dir, Fichero: string;              //Directorio po
  ini: TIniFile;          //Archivo Ini
  VarBUnir:Boolean;
  VarIID:Integer;

implementation

{$R *.dfm}

uses UDM,Fun;

procedure TFPlano.ButOcupantes1Click(Sender: TObject);
begin
  Contador.NumberIn:=1;
end;

procedure TFPlano.ButOcupantes2Click(Sender: TObject);
begin
   Contador.NumberIn:=2;
end;

procedure TFPlano.ButOcupantes3Click(Sender: TObject);
begin
  Contador.NumberIn:=3;
end;

procedure TFPlano.ButOcupantes4Click(Sender: TObject);
begin
  Contador.NumberIn:=4;
end;

procedure TFPlano.ButReservarClick(Sender: TObject);
begin
   (FindComponent(VarSNameComp) as TSpeedButtonTPV).Ocupada:=False;
   (FindComponent(VarSNameComp) as TSpeedButtonTPV).Reserva:=True;
   (FindComponent(VarSNameComp) as TSpeedButtonTPV).Font.Color:=clYellow;
end;

procedure TFPlano.butSalirClick(Sender: TObject);
begin
        Close;
end;

procedure TFPlano.ButSeleccionarPlanoClick(Sender: TObject);
var i,VarIContadorLista:Integer;
    varStipo:string;
    Lista:TList;
    sl: TStringList;
begin
    ActQuery(IBQUbicacion,'Select * From UBICADOS where SITUACION='+QuotedStr(DSSituacion.DataSet.FieldByName('SITUACION').AsString));
    Caption:='Plano [ '+ DSSituacion.DataSet.FieldByName('SITUACION').AsString+' ]';
    sl := TStringList.Create;
    try
      for i:= 0 to (Panel2.ControlCount - 1) do   //Contamos el número de speedbutton
      begin
         if Panel2.Controls[i] is TImage  then TImage(Panel2.Controls[i]).Picture:=nil;
         if (Panel2.Controls[i] is TSpeedButtonTPV) then Sl.Add((Panel2.Controls[i]).Name); //TSpeedButtonTPV(Panel2.Controls[i]).Free;
      end;
      for I := 0 to sl.Count - 1 do
      begin
        (FindComponent(sl[i]) as TSpeedButtonTPV).Free;
      end;
     finally
      sl.Free;
    end;
    dir := ExtractFilePath(ParamStr(0));
    if FileExists(dir + DSSituacion.DataSet.FieldByName('SITUACION').AsString +'.ini') then
    begin
       ini := TIniFile.Create(dir + DSSituacion.DataSet.FieldByName('SITUACION').AsString +'.ini');
       Imagen.Picture.LoadFromFile(ini.ReadString('Plano','Fichero',''));
       for I := 0 to ini.ReadInteger('Statup','Numero de elementos',0)-1 do     //Quitar el 0 en   Statup0
       begin
         with TSpeedButtonTPV.Create(SElf)do
         begin
           Name:=ini.ReadString('Boton'+inttostr(I),'Name','');
           Font.Size:=7;
           Font.Color:=clAqua;
           Font.Style:=[fsBold];
           Caption:=Name;//Copy(Name,4,Length(name));
           Parent:=Panel2;
           Width:=ini.ReadInteger('Boton'+inttostr(I),'Width',0);
           Height:=ini.ReadInteger('Boton'+inttostr(I),'Height',0);
           Top:=ini.ReadInteger('Boton'+inttostr(I),'Top',0);
           Left:=ini.ReadInteger('Boton'+inttostr(I),'Left',0);
           ButonStyle:=SbtImagenColor;
           ImagenTop:=ini.ReadInteger('Boton'+inttostr(I),'ImagenTop',0);
           ImagenLeft:=ini.ReadInteger('Boton'+inttostr(I),'ImagenLeft',0);
           ImageLong:=ini.ReadInteger('Boton'+inttostr(I),'ImageLong',0);
           LeftQuad:=ini.ReadInteger('Boton'+inttostr(I),'LeftQuad',0);
           LongQuad:=ini.ReadInteger('Boton'+inttostr(I),'LongQuad',0);
           TopQuad:=(Width-(LongQuad+5));
           case ini.ReadInteger('Boton'+inttostr(I),'MYType',0) of
             0:begin
            MYType:=MMesa;
                  varStipo:='MMesa';
               end;
             1:begin
                  MYType:=MTaburete;
                  varStipo:='MTaburete';
               end;
             2:begin
                 MYType:=MTerraza;
                 varStipo:='MTerraza';
               end;
             3:begin
                 MYType:=MBanco;
                 varStipo:='MBanco';
               end;
             4:begin
                 MYType:=MSofa;
                 varStipo:='MSofa';
               end;
             5:begin
                 MYType:=Motros;
                 varStipo:='Motros';
               end;
           end;
           ColorUsed:=clLime;
           UsedQuad:=True;
            if DsTipo.DataSet.Locate('MTIPOS',varStipo,[loPartialKey,loCaseInsensitive]) then Glyph:=DBImage1.Picture.Bitmap;
           OnClick:=MiOnClick;  //Asignamos el evento creado, para ello
           OnMouseEnter:=Mouseenter;
         end;
       end;
    end;
end;

procedure TFPlano.FormCreate(Sender: TObject);
begin
   VarBUnir:=False;
   ButOcupantes1Click(Sender);
end;

procedure TFPlano.MiOnClick(Sender: TObject);
var VarBSeguir:Boolean;
begin
   VarSNameComp:=(Sender as TSpeedButtonTPV).Name;
   LabUbicacion.Caption:='[  '+VarSNameComp+'  ]';
    //Cargar datos
     LabOcupantes.Caption:=IntToStr(TSpeedButtonTPV(Sender).Comensales);
     LabTicket.Caption:=TSpeedButtonTPV(Sender).NumeroTicket;
     LabID.Caption:=IntToStr(TSpeedButtonTPV(Sender).Id);
   if (TSpeedButtonTPV(Sender).Ocupada=false) and (TSpeedButtonTPV(Sender).NumeroTicket<>'') then
   begin  //Si esta ocupada y tiene ticket no seguimos
      MessageBeep(1000);  //En configuracion si tenemos sonidos de avisos activados
      ShowMessage('Este elemento tiene un ticket asociado, debe cobrara el ticket para liberarla');
      TSpeedButtonTPV(Sender).Ocupada:=True;
      TSpeedButtonTPV(Sender).Font.Color:=clBlack;
      VarBSeguir:=False;
   end else VarBSeguir:=True;
   if VarBSeguir then
   begin
     if VarBUnir then
     begin
         TSpeedButtonTPV(Sender).Ocupada:=False;
         TSpeedButtonTPV(Sender).Font.color:=clAqua;
         if TSpeedButtonTPV(Sender).Unidas then
         begin
            TSpeedButtonTPV(Sender).Unidas:=False;
            TSpeedButtonTPV(Sender).Id:=0;
         end
         else
         begin
             TSpeedButtonTPV(Sender).Unidas:=True;
             TSpeedButtonTPV(Sender).Id:=VarIID;
             TSpeedButtonTPV(Sender).Font.color:=$007FFF7F;
         end;
     end else
     begin
       if TSpeedButtonTPV(Sender).Reserva then
       begin  //Si esta reservada
          Case Application.MessageBox( pchar(  'Desea ocupara el elemento o  eliminar la reserva' +#13#10
                                       +#13#10+'       [ Si ]         Ocupa la reserva'
                                       +#13#10+'      [ No ]        Elimina la reserva'
                                       +#13#10+'[ Cancelar ]  Lo deja tal cual'),
                                       pchar('Esta elemento esta reservado'), 3+32+0) of
          6:begin  //Si
                    TSpeedButtonTPV(Sender).Reserva:=False;
                    TSpeedButtonTPV(Sender).Ocupada:=True;
                    TSpeedButtonTPV(Sender).Font.Color:=clBlack;

            end;
          7:begin  //No
                    TSpeedButtonTPV(Sender).Reserva:=False;
                    TSpeedButtonTPV(Sender).Ocupada:=False;
                    TSpeedButtonTPV(Sender).Font.Color:=clAqua;
            end;
          end;
       end else
       begin
         if TSpeedButtonTPV(Sender).Unidas then
         begin      //Si estan unidas

         end else
         begin
            if TSpeedButtonTPV(Sender).Ocupada then     //Si la ocupamos
            begin
               TSpeedButtonTPV(Sender).Font.Color:=clBlack;
               if TSpeedButtonTPV(Sender).MYType=MTaburete then   TSpeedButtonTPV(Sender).Comensales:=1
               else TSpeedButtonTPV(Sender).Comensales:=SoloInteger(Contador.Value);
               //Si el ID es diferente de 0 buscamos los elementos con el mismo id y cargamos los datos





            end else
            begin    //Si la liberamos
          TSpeedButtonTPV(Sender).Font.color:=clAqua;
                TSpeedButtonTPV(Sender).Comensales:=0;
                TSpeedButtonTPV(Sender).Id:=0;
            end;
         end;

       end;
     end;
   end;
end;



procedure TFPlano.Mouseenter(sender: TObject);
function EstadoBoolean(MyBoolean:Boolean):string;
begin
    if MyBoolean then Result:='Si' else Result:='No';
end;
begin
    TSpeedButtonTPV(Sender).Hint:= ' Elemento.: '+TSpeedButtonTPV(Sender).Name  +#13#10+
           ' Ocupante.: '+IntToStr(TSpeedButtonTPV(Sender).Comensales ) +#13#10+
                                   ' Nº Ticket: '+TSpeedButtonTPV(Sender).NumeroTicket  +#13#10+
                                   ' Ocupada..: [ '+EstadoBoolean(TSpeedButtonTPV(Sender).Ocupada)+' ]'+#13#10+
                                   ' Reservada: [ '+EstadoBoolean(TSpeedButtonTPV(Sender).Reserva)+' ]'+#13#10+
                                   ' Unida....: [ '+EstadoBoolean(TSpeedButtonTPV(Sender).Unidas)+' ] Identificado: '+IntToStr(TSpeedButtonTPV(Sender).Id );
    MemInformacion.Lines.Clear;
    MemInformacion.Lines.Text:=TSpeedButtonTPV(Sender).Hint;
end;

procedure TFPlano.ButUnirClick(Sender: TObject);
var VarSID:string;
begin
   VarSID:=Copy(DateToStr(Now),0,5)+TimeToStr(Now);
   VarIID:=SoloInteger(VarSID);
  if ButUnir.Down then  VarBUnir:=True else VarBUnir:=False;
end;

end.

Espero sirva de ayuda, si tienes alguna duda, pega un toque en el foro
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #6  
Antiguo 21-10-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Como puedes ver uso en este caso dos tablas 1 con las diversas situaciones y otra con los elementos de esa situación, así cuando llamamos a una, automáticamente mostramos únicamente los elementos de esta plano.

Todo lo guardo en un ini que cargo al mostrar el plano.

Espero haberme explicado claramente .
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #7  
Antiguo 22-10-2013
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
José Luis Garcí, no se ven las imágenes.
__________________
http://www.gestionportable.com
Responder Con Cita
  #8  
Antiguo 22-10-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Pongo los links para que podáis verlas, aunque a mi si se me ven, si siguen sin verse, podéis mandarme un email y os mando los archivos JPG

Esta es la del creador de planos http://farm8.staticflickr.com/7334/1...9174bce7_b.jpg
y esta la de trabajar ya con el plano http://farm3.staticflickr.com/2893/1...1a91ea9a_b.jpg
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #9  
Antiguo 14-11-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
pongo la foto nuevamente

__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #10  
Antiguo 15-11-2013
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
No veo mucha utilidad en meterse en honduras con un "plano de mesas", cada camarero ya sabe donde están cuales son las que le corresponden y como las va a atender. Si unes dos mesas puedes tomar como base la que le corresponda al camarero que las "une" (por aquello de que agarre una mesa de otro). El número de comensales puede ser variable y no tiene importancia salvo que se vayan a pedir cuentas separadas, lo cual el camarero normalmente pregunta primero. Si es así, entonces cada mesa puede tener n numero de órdenes que están asignadas a n numero de comensales identificados por x dato (nombre de pila por ejemplo) o bien la mesa puede tener una sola cuenta consolidada. Nuevamente, insisto, el como se haga al mesero (camarero) le importa poco. El querrá poder tomar la comanda (orden) lo más rápido posible.

En cierta cadena de restaurantes muy famosa aquí en México trataron de implementar un sistema basado en dispositivos tipo PALM, era tan complicado para las meseras que regresaron a la ya conocida libretita. Ahora solo toman nota, lo alimentan al sistema y de ahí todo fluye. No veo por qué inventar el hilo negro.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
El arroz que está llegando a nuestras mesas no está autorizado para consumo humano sakuragi La Taberna 5 13-10-2013 00:07:14
mapa gps en php?? foetus PHP 1 19-03-2008 06:29:19
El mapa de internet ixMike Humor 7 07-03-2008 20:58:33
Mapa galustiza C++ Builder 4 20-12-2006 16:02:08
Restaurante Microsoft santana Humor 0 24-11-2003 23:27:55


La franja horaria es GMT +2. Ahora son las 07:57:01.


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
Copyright 1996-2007 Club Delphi