MOVER BOTON TIEMPO DE EJECUCION

MOVER BOTON TIEMPO DE EJECUCION

Postby jbrita » Thu Dec 27, 2018 1: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
jbrita
 
Posts: 502
Joined: Mon Jan 16, 2006 3:42 pm

Re: MOVER BOTON TIEMPO DE EJECUCION

Postby cmsoft » Thu Dec 27, 2018 6: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: Select all  Expand view  RUN

#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
 
User avatar
cmsoft
 
Posts: 1291
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: MOVER BOTON TIEMPO DE EJECUCION

Postby jbrita » Thu Dec 27, 2018 8:05 pm

muchas gracias , probare yo igual trabajo con mysql

saludos
jbrita
 
Posts: 502
Joined: Mon Jan 16, 2006 3:42 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 47 guests