Desarrollando clase para código de barras.

Desarrollando clase para código de barras.

Postby FiveWiDi » Wed Apr 29, 2009 7:02 pm

Hola Antonio,

Estoy intentando crear una clase para pintar en una WINDOW o DIALOG un código de barras.

He conseguido pintarlo mediante una adaptación de la librería BarLib de Cayetano.
Para pintar el código de barras utilizo un FOR-NEXT y la función:
FillRect( oWnd:GetDC(), {nx, ny, (nx += nWidth), ny + nLen}, oBr:hBrush )

Ahora pretendo crear un control a partir de una clase.

Me estoy fijando en la clase TSay que és la más sencilla.
Qué método debo programar para que cuando la ventana se mueva o iconice o pierda-recupere el foco se vuelva a pintar el código de barras?
Es correcto utilizar oWnd:GetDC() en esta nueva clase? O debería utilizar el :Hdc del propio control?

Se me está empezando a liar la cosa (con lo bonito que me iba a quedar).

Un Saludo
Carlos G.
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1060
Joined: Mon Oct 10, 2005 2:38 pm

Re: Desarrollando clase para código de barras.

Postby Marcelo Via Giglio » Thu Apr 30, 2009 2:53 am

hola,

asegurate, que tienes el metodo paint y es en ese metodo,donde pintas las barras fill.....

saludos

Marcelo
Marcelo Via Giglio
 
Posts: 1050
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Desarrollando clase para código de barras.

Postby FiveWiDi » Thu Apr 30, 2009 1:34 pm

Marcelo Via Giglio wrote:hola,

asegurate, que tienes el metodo paint y es en ese metodo,donde pintas las barras fill.....

saludos

Marcelo


Gracias Marcelo,

lo tendré en cuenta.

Saludos
Carlos G.
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1060
Joined: Mon Oct 10, 2005 2:38 pm

Re: Desarrollando clase para código de barras.

Postby Daniel Garcia-Gil » Sat May 02, 2009 4:29 am

FiveWidi

Si lo que quieres es hacer una clase que te cree un control para solo pintar el codigo de barras no es muy complicado...

esta es una plantilla para que comiences

viewtopic.php?p=76632#p76632

FiveWidi wrote:Qué método debo programar para que cuando la ventana se mueva o iconice o pierda-recupere el foco se vuelva a pintar el código de barras?

El control crea su propia ventana, que va a ser hija de otra, cuando muevas, iconices, etc, el padre este se "encarga" de sus hijos...

FiveWidi wrote:Es correcto utilizar oWnd:GetDC() en esta nueva clase? O debería utilizar el :Hdc del propio control?

Si deberas usar el propio DC para este control...

Solo debes tener esto, asi de simple...
METHOD Display() INLINE ::BeginPaint(), ::Paint(), ::EndPaint(), 0
cuando window envie el mensaje de pintar este es interceptado (HandleEvent ) y llama a este metodo para preparar la ventana creada para pintar en ella...
aqui es llamado al otro metodo que hara el trabajo de pintado Paint()

en el metodo paint lo mas recomendable es que uses la tecnica de doble buffer que proporciona FW

METHOD Paint Class MyControl
local aInfo := ::DispBegin() //comienza el doble buffer

RUTINA DE PINTADO

::DispEnd( aInfo ) //Termina doble buffer y pintado del control

return nil

espero esto te ayude y haber sido lo suficientemente claro y explicito
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Desarrollando clase para código de barras.

Postby FiveWiDi » Sat May 02, 2009 5:38 pm

Daniel Garcia-Gil wrote:FiveWidi

Si lo que quieres es hacer una clase que te cree un control para solo pintar el codigo de barras no es muy complicado...

esta es una plantilla para que comiences

viewtopic.php?p=76632#p76632

FiveWidi wrote:Qué método debo programar para que cuando la ventana se mueva o iconice o pierda-recupere el foco se vuelva a pintar el código de barras?

El control crea su propia ventana, que va a ser hija de otra, cuando muevas, iconices, etc, el padre este se "encarga" de sus hijos...

FiveWidi wrote:Es correcto utilizar oWnd:GetDC() en esta nueva clase? O debería utilizar el :Hdc del propio control?

Si deberas usar el propio DC para este control...

Solo debes tener esto, asi de simple...
METHOD Display() INLINE ::BeginPaint(), ::Paint(), ::EndPaint(), 0
cuando window envie el mensaje de pintar este es interceptado (HandleEvent ) y llama a este metodo para preparar la ventana creada para pintar en ella...
aqui es llamado al otro metodo que hara el trabajo de pintado Paint()

en el metodo paint lo mas recomendable es que uses la tecnica de doble buffer que proporciona FW

METHOD Paint Class MyControl
local aInfo := ::DispBegin() //comienza el doble buffer

RUTINA DE PINTADO

::DispEnd( aInfo ) //Termina doble buffer y pintado del control

return nil

espero esto te ayude y haber sido lo suficientemente claro y explicito


Gracias Daniel,

Muy poco a poco estoy avanzando, y esta plantilla y tus consejos me serviran.

A ver si pronto la puedo compartir; no és una cosa útil pero me ilusiona.

Saludos
Carlos G.
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1060
Joined: Mon Oct 10, 2005 2:38 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 82 guests