FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Desarrollando clase para c贸digo de barras.
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Desarrollando clase para c贸digo de barras.
Posted: Wed Apr 29, 2009 07: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 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Re: Desarrollando clase para c贸digo de barras.
Posted: Thu Apr 30, 2009 02:53 AM

hola,

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

saludos

Marcelo

Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: Desarrollando clase para c贸digo de barras.
Posted: Thu Apr 30, 2009 01: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 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Desarrollando clase para c贸digo de barras.
Posted: Sat May 02, 2009 04: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
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: Desarrollando clase para c贸digo de barras.
Posted: Sat May 02, 2009 05: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 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Continue the discussion