Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 10-02-2017
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 438
Poder: 22
JoAnCa Va por buen camino
Pues continué experimentando con TSelectOnRuntime de Neftali en el ejemplo del restaurante y logre adicionar la etiqueta y resaltar el TImage con un TShape

Le agregue esto al procedimiento de crear las mesa (_CreateMesa) para asociarle la etiqueta

Código Delphi [-]
    //--- Crear y asociar la etiqueta ---
    lblDisp:=CrearLabelAsociada(img, NewName);
    img.Hint:=lblDisp.Name;

quedando de esta forma
Código Delphi [-]
function TFormMain._CreateMesa(AName:String; AParent:TWinControl; ALeft, ATop:Integer):TImage;
var
  img               :TImage;
  comp              :TComponent;
  NewName, TitDisp  :String;

begin
  // Crear el nuevo elemento
  img := TImage.Create(Self);
  Result := img;

  // Modificar
  with img do
  begin
    // crear la nueva mesa
    Picture := imgMesaDemo.Picture;

    // Se ha pasado nombre?
    if (AName <> '') then
    begin
      NewName := AName;
    end
    else
    begin
      // Proteccion simple por si el nombre existe... (por si se han borrado)
      NewName := 'Mesa_' + IntToStr(_nmesas);
      comp := Self.FindComponent(NewName);
      // ir buscando nombre no existente
      while Assigned(comp) do
      begin
        _nmesas := _nmesas + 1;
        NewName := 'Mesa_' + IntToStr(_nmesas);
        comp := Self.FindComponent(NewName);
      end;
    end;

    _nmesas := _nmesas + 1;
    Parent := AParent{pnlPlano};
    img.Name := NewName;
    img.ShowHint := True;
    img.Hint := 'Mesa: ' + img.Name;

    // Posicion
    Left := ALEft;
    Top := ATop;
    // Tamaño
    height := imgMesaDemo.Height;
    width := imgMesaDemo.Width;
    // Otras propìedades
    Transparent := True;
    Stretch := True;
    // eventos
    OnClick := OnMesaClick;

    //--- Crear y asociar la etiqueta ---
    lblDisp:=CrearLabelAsociada(img, NewName);
    img.Hint:=lblDisp.Name;

    // Añadirla al combo de mesas
    cbMesa.Items.Add(NewName);
    cbMesa.ItemIndex := 0;
    cbMesa2.Items.Add(NewName);
    cbMesa2.ItemIndex := 0;
  end;
end;

Estab es la funcion del Label
Código Delphi [-]
function TFormMain.CrearLabelAsociada(AImage: TImage; Titulo: string):TLabel;
var
  lbl :TLabel;

begin
  Randomize;
  lbl:=TLabel.Create(Self);
  with lbl do
  begin
    Name:='lblRed'+IntToStr(Random(1000));
    Parent:=AImage.Parent;
    Left:=AImage.Left;
    Top:=AImage.Top + AImage.Height + 2;
    Caption:=Titulo;
    Alignment:=taCenter;
  end;
  Result:=lbl;
end;

Y para el resaltado modifique el evento OnMesaClick, quedando de esta forma

Código Delphi [-]
//----- Para cuando se seleccione el Dispositivo -----
procedure TFormMain.OnMesaClick(Sender: TObject);
begin
  SelectOnRunTime.Selected := False;
  // En un TControl?
  if (Sender is TControl) then
  begin
    SelectOnRunTime.SelectControl:=TControl(Sender);
    SelectOnRunTime.Selected:=True;

    //--- Mostrar el Marco ---
    shp1.Visible:=True;
    shp1.Left:=TControl(Sender).Left-1;
    shp1.Top:=TControl(Sender).Top-1;

    //--- Mover la etiqueta asociada también ---
    lblDisp:=TLabel(FindComponent(TControl(Sender).Hint));
    lblDisp.Left:=TControl(Sender).Left;
    lblDisp.Top:=TControl(Sender).Top + TControl(Sender).Height + 2;
  end;
end;

Aunque me quedo un poco "rustico" ya que cuando se mueve el control, la etiqueta y el marco se quedan en su origen hasta que se suelte el control en su destino, que se ubican en la posicion correcta

Pero bueno, por ahora esta bien, despues se podra refinar un poco para que quede mejor
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
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
Peticion a Neftali sobre Componente kurono Varios 20 23-01-2011 10:05:18
Solicito ayuda de Neftalí JoAnCa Varios 2 20-03-2010 15:26:45
TSelectOnRunTime ACCESS VIOLATION DELPHI7 tuxtlagacse API de Windows 1 30-01-2007 11:08:45
No funcionan componentes TSelectOnRuntime cuando estan controles dentro de un panel gulder API de Windows 6 11-08-2006 09:58:50
Neftali Ayuda please! krilea Conexión con bases de datos 6 01-06-2006 15:41:22


La franja horaria es GMT +2. Ahora son las 13:09:23.


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