Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 09-04-2017
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.198
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Una primera aproximación sería crear los botones en sus posiciones e irlos visualizando conforme se necesiten.

Te muestro una clase que crea los botones ordenados con los caption de las mesas correspondientes, en este caso son 5 filas de 5 mesas cada una pero puedes poner las que quieras:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TButtons = class
  private
    Owner: TWinControl;
    nRows: integer;
    nCols: integer;
    Buttons: array of TButton;
  public
    constructor Create(AOwner: TWinControl);
    destructor Destroy; override;
    procedure SetButtons(Rows, Cols: integer);
    procedure SetOnClick(OnClick: TNotifyEvent);
  end;

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure ButtonClick(Sender: TObject);
  private
    Buttons: TButtons;
  public
    { Public declarations }
  end;


var
  Form1: TForm1;

implementation

{$R *.dfm}
constructor TButtons.Create(AOwner: TWinControl);
begin
  inherited Create;
  Owner:= AOwner;
end;

destructor TButtons.Destroy;
begin
  SetLength(Buttons, 0);
  inherited Destroy;
end;

procedure TButtons.SetButtons(Rows, Cols: integer);
var
  i, Count: integer;
begin
  nRows:= Rows;
  nCols:= Cols;
  Count:= Rows*Cols;
  SetLength(Buttons, Count);
  for i:= 0 to Count-1 do
  begin
    Buttons[i]:= TButton.Create(Owner);
    Buttons[i].Caption:= IntToStr((i div Cols + 1)*10 + (i mod Cols) + 1);
    Buttons[i].Top:=  Buttons[i].Height*(i mod Cols);
    Buttons[i].Left:= Buttons[i].Width*(i div Cols);
    Buttons[i].Parent:= Owner;
  end;
end;

procedure TButtons.SetOnClick(OnClick: TNotifyEvent);
var
  i, Count: integer;
begin
  Count:= nRows * nCols;
  for i:= 0 to Count-1 do
    Buttons[i].OnClick:= OnClick;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Buttons:= TButtons.Create(self);
  Buttons.SetButtons(5,5);
  Buttons.SetOnClick(ButtonClick);
end;

procedure TForm1.ButtonClick(Sender: TObject);
begin
  MessageBox(Handle, PCHAR(TButton(Sender).Caption), 'hola', 0);
end;

end.

Saludos.
Responder Con Cita
 



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
Crear Form en tiempo de ejecución mjjj OOP 2 19-01-2012 19:11:54
Crear Form en tiempo de Ejecución harvicoco Varios 3 28-06-2006 14:55:05
Crear Componentes en tiempo de ejecucion fartycl Varios 3 21-06-2006 22:03:13
Crear un DSN en tiempo de ejecucion neyvan Conexión con bases de datos 7 21-05-2004 17:41:45


La franja horaria es GMT +2. Ahora son las 18:18:30.


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