FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour MOVER BOTON TIEMPO DE EJECUCION
Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM
MOVER BOTON TIEMPO DE EJECUCION
Posted: Thu Dec 27, 2018 01:01 PM

Estoy intentando hacer un sistema de buses, pero la cosa se está poniendo difícil. Lo que quiero hacer es un botón que al hacerle click me cree nuevos botones (en tiempo de ejecución/dinámicos - o nuevas asiento) y luego poder mover esos mismos botones (asientos) y posicionarlos dentro del Form Principal.

saludos

Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: MOVER BOTON TIEMPO DE EJECUCION
Posted: Thu Dec 27, 2018 06:24 PM
Hola jbrita:
Eso lo puedes hacer con BTNBMP, con la opcion DESIGN. Con una barra para el boton agregar un asiento. Y que el usuario lo ponga y lo mueva donde quiera.
Yo lo uso desde una tabla MySql, pero es lo mismo con DBFs.
Tendrás que tener guardado en que coordenadas de la pantalla lo dejo el usuario.
Code (fw): Select all Collapse
#include "FiveWin.ch"
MEMVAR oApp
static oDlg, nAsiento := 1,oQryAsientos

PROCEDURE ConfBus(nBus)
LOCAL oBar
   oQryAsientos:= oApp:oServer:Query("SELECT * FROM asientos ORDER BY numero")   
   DEFINE FONT oFont NAME "TIME NEW ROMAS" SIZE 15,30    
   DEFINE WINDOW oDlg MDICHILD TITLE "Definicion de Bus" ;   
   DEFINE BUTTONBAR oBar  3D SIZE 60,60 OF oDlg 2007 RIGHT
   DEFINE BUTTON OF oBar TOOLTIP "Agregar Asiento"  NOBORDER PROMPT "Agregar"  TOP ACTION AgregaAsiento(oDlg)   
   DEFINE BUTTON OF oBar TOOLTIP "Guardar Bus"      NOBORDER PROMPT "Guardar"  TOP ACTION GrabarAsiento(oDlg)   
   DEFINE BUTTON OF oBar TOOLTIP "Salir"            NOBORDER PROMPT "Salir"    TOP ACTION oDlg:End()
   ACTIVATE WINDOW oDlg MAXIMIZED ON INIT (CargarAsientos(oDlg),SysRefresh())
RETURN

STATIC function AgregaAsiento( oDlg )
   LOCAL oBitMap
   @20, 20 BTNBMP oBitMap PROMPT (ALLTRIM(STR(nAsiento))) RESOURCE "ASIENTO" CENTER ;
         OF oDlg SIZE 55,55 DESIGN ADJUST NOBORDER TRANSPARENT FONT oFont 
   BringWindowToTop( oBitMap:hWnd ) 
   oBitMap:SetFocus()
   oBitMap:cargo := nAsiento
   nAsiento ++   
return nil

STATIC function CargarAsientos(oDlg)
LOCAL oBitMap
DO WHILE !oQryAsientos:Eof()
    @ oQryAsientos:nTop, oQryAsientos:nLeft BTNBMP oBitMap PROMPT (STR(oQryAsientos:numero)) RESOURCE "ASIENTO" ;
         OF oDlg SIZE oQryAsientos:nWidth, oQryAsientos:nHeight CENTER DESIGN ADJUST NOBORDER TRANSPARENT FONT oFont      
    nAsiento := oQryAsientos:numero
    oBitMap:cargo := nAsiento
    oQryMesas:Skip()
ENDDO
nAsiento := oQryAsientos:numero + 1
RETURN nil

STATIC FUNCTION GrabarAsiento(oDlg)
LOCAL i, oControl 
oApp:oServer:Execute("TRUNCATE asientos")
FOR i := 1 to LEN(oDlg:aControls)
    oControl := oDlg:aControls[i]
    IF oControl:cargo = NIL 
       LOOP
    ENDIF
    oApp:oServer:Execute("INSERT INTO asientos "+;
      "(numero,ntop,nleft,nwidth,nheight) VALUES "+;
                         "("+ClipValue2Sql(oControl:cargo)+","+;
                            +ClipValue2Sql(oControl:nTop)+","+; 
                            +ClipValue2Sql(oControl:nLeft)+","+;
                            +ClipValue2Sql(oControl:nWidth)+","+;
                            +ClipValue2Sql(oControl:nHeight)+")")
NEXT i
RETURN nil
Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM
Re: MOVER BOTON TIEMPO DE EJECUCION
Posted: Thu Dec 27, 2018 08:05 PM

muchas gracias , probare yo igual trabajo con mysql

saludos

Continue the discussion