CREAZIONE RADAR PER RALLY
Moderator: Enrico Maria Giordano
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Quantità di record intorno ai 10000 sono assolutamente tranquilli per un DBF. Ma anche con 100000 non avresti problemi. C'è gente che usa DBF con milioni di record senza alcun problema.
EMG
EMG
Last edited by Enrico Maria Giordano on Fri May 12, 2006 6:38 am, edited 1 time in total.
OK
Rritornando alle linee del roadbook vorrei sapere come posso disegnare
un BMP ad una certa posizione cioè se guardi questa figura puoi capire
Ovviamente ho disegnato come vorrei costruirlo
Sopra c'è un MEMO e va bene dove inseriro il titolo del roadbook ed altre informazioni tecniche
Sotto c'è la prima linea del roadbook a sinistra i km totali e parziali
in mezzo il bmp dove posso inserire i simbolini e a destra altri get
Come posso fare per disegnare un rettangolo nero in una Wndchild ?
per i get ok ma non riesco ad inserire il bmp nel mezzo
ho provato a vedere con la clusola design dove si collocava ma mi si crea grandissimo
io ho fatto cosi :
@ 10,20 BITMAP oBmp SIZE 200, 100 OF oWndChild
questa bmp mi si crea grandissima come mai ' io la volevo al massimo 200x100 : tieni presente che io in questa bmp ci metto i simbolini ecco cosa mi serve quindi deve essere bianca con un rettangolo giallo intorno per delimitare ilperimetro dove inserire i simbolini
Poi con questa funzione dovrei costruire il perimetro che ti ho detto pocanzi ma davvero non capisco a quali coordinate si riferisce il fillrect ...
mi dai una dritta per favore?
Rritornando alle linee del roadbook vorrei sapere come posso disegnare
un BMP ad una certa posizione cioè se guardi questa figura puoi capire
Ovviamente ho disegnato come vorrei costruirlo
Sopra c'è un MEMO e va bene dove inseriro il titolo del roadbook ed altre informazioni tecniche
Sotto c'è la prima linea del roadbook a sinistra i km totali e parziali
in mezzo il bmp dove posso inserire i simbolini e a destra altri get
Come posso fare per disegnare un rettangolo nero in una Wndchild ?
per i get ok ma non riesco ad inserire il bmp nel mezzo
ho provato a vedere con la clusola design dove si collocava ma mi si crea grandissimo
io ho fatto cosi :
Code: Select all
function NuovoRB()
local oWndChild, oBar, oBmp
LOCAL KMTotali,KMParziali,Titolo,Note1,Note2
LOCAL oGet1
DEFINE WINDOW oWndChild MDICHILD COLOR "N/W" of oWnd;
title "Nuovo RoadBook"
DEFINE BUTTONBAR oBar 3D SIZE 25, 25 OF oWndChild
DEFINE BUTTON OF oBar ACTION PutLabel( oBmp ) TOOLTIP "Testo"
DEFINE BUTTON OF oBar ACTION PutBitmap( oBmp ) TOOLTIP "Simboli"
DEFINE BUTTON OF oBar ACTION PreView( oBmp ) TOOLTIP "Anteprima di stampa"
// titolo
@ 2,0 get oGet1 VAR Note1 MEMO SIZE 700, 100 OF oWndChild
//Linea
@ 10,2 say "KM TOTALI" SIZE 80, 50 OF oWndChild
@ 14,2 say "KM PARZIALI" SIZE 80, 50 OF oWndChild
@ 10,10 get oGet2 VAR KMTotali SIZE 80, 50 OF oWndChild
@ 14,10 get oGet2 VAR KMParziali SIZE 80, 50 OF oWndChild
@ 10,20 BITMAP oBmp SIZE 200, 100 OF oWndChild
oBmp:bPainted = { | hDC | DrawSections( hDC ) }
* oBmp:oHScroll:SetRange( 1, 1200 )
* oBmp:oHScroll:nPgStep = 20
oWndChild:SetControl( oBmp )
ACTIVATE WINDOW oWndChild
questa bmp mi si crea grandissima come mai ' io la volevo al massimo 200x100 : tieni presente che io in questa bmp ci metto i simbolini ecco cosa mi serve quindi deve essere bianca con un rettangolo giallo intorno per delimitare ilperimetro dove inserire i simbolini
Poi con questa funzione dovrei costruire il perimetro che ti ho detto pocanzi ma davvero non capisco a quali coordinate si riferisce il fillrect ...
mi dai una dritta per favore?
Code: Select all
function DrawSections( hDC )
local oBrWhite, oBrCyan
DEFINE BRUSH oBrWhite COLOR CLR_WHITE
DEFINE BRUSH oBrCyan COLOR CLR_YELLOW
* FillRect( hDC, { 10, 20, 100, 641 }, oBrWhite:hBrush )
*FillRect( hDC, { 100, 50, 150, 641 }, oBrCyan:hBrush )
* FillRect( hDC, { 150, 0, 200, 641 }, oBrWhite:hBrush )
oBrWhite:End()
oBrCyan:End()
Best Regards, Saludos
Falconi Silvio
Falconi Silvio
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
si ma Linares mi ha detto di creare un user control
Anche a me mi sembra la soluzione giusta
Linares inoltre mi ha detto di iniziare a disegnare una linea del roadbook prendendo in esame il paint della classe Ttabs come riferimento
cioè dovrei disegnare questo inizialmente
il rettangolo mi sembra facile a crearlo ma poi davanti alla classe TTbs ovviamente rimodificata in Rbook mi perdo
Eppure devo solo fare un rettangolo diviso in tre parti
inserire due prompt per i say,una bitmap al centro,e altri prompt per altri tre say
questo è il metodo Paint
mi daresti solo una dritta a disegnare il rettangolo , e il bitmap in mezzo poi i prompt non dovrebbero essere difficili ...
grazie
Anche a me mi sembra la soluzione giusta
Linares inoltre mi ha detto di iniziare a disegnare una linea del roadbook prendendo in esame il paint della classe Ttabs come riferimento
cioè dovrei disegnare questo inizialmente
il rettangolo mi sembra facile a crearlo ma poi davanti alla classe TTbs ovviamente rimodificata in Rbook mi perdo
Eppure devo solo fare un rettangolo diviso in tre parti
inserire due prompt per i say,una bitmap al centro,e altri prompt per altri tre say
questo è il metodo Paint
Code: Select all
METHOD Paint() CLASS TTabs
local aInfo := ::DispBegin()
local hDarkPen := CreatePen( PS_SOLID, 1, GetSysColor( COLOR_BTNSHADOW ) )
local hGrayPen := CreatePen( PS_SOLID, 1, GetSysColor( COLOR_BTNFACE ) )
local hLightPen := CreatePen( PS_SOLID, 1, GetSysColor( COLOR_BTNHIGHLIGHT ) )
local n, nCol := 5, nHeight := 15
local hOldFont, hOldBrush, hOldPen
local hDC := ::hDC
local hGrayBrush := CreateSolidBrush( ::nClrPane )
local hDarkBrush := CreateSolidBrush( GetSysColor( COLOR_INACTIVECAPTION ) )
local lNeedButtons := .f.
if LargeFonts()
nHeight += 3
endif
FillRect( ::hDC, GetClientRect( ::hWnd ), ::oBrush:hBrush )
hOldFont = SelectObject( hDC, ::oFont:hFont )
hOldPen = SelectObject( hDC, hDarkPen )
hOldBrush = SelectObject( hDC, hDarkBrush )
MoveTo( hDC, 0, 0 )
LineTo( hDC, ::nWidth(), 0 )
SetBlackPen( hDC )
MoveTo( hDC, 0, 1 )
LineTo( hDC, ::nWidth(), 1 )
SetTextColor( hDC, CLR_WHITE )
if Len( ::aSizes ) < Len( ::aPrompts )
::Default()
endif
DEFAULT ::nOffset := 1
for n = ::nOffset to Len( ::aPrompts )
SelectObject( hDC, If( n == ::nOption, hGrayBrush, hDarkBrush ) )
SetBlackPen( hDC )
if n == ::nOffset .or. n == ::nOption
PolyPolygon( hDC, { { nCol, 1 },;
{ nCol + 5, nHeight },;
{ nCol + 9 + ::aSizes[ n ], nHeight },;
{ nCol + 14 + ::aSizes[ n ], 1 },;
{ nCol, 1 } } )
else
PolyPolygon( hDC, { { nCol + 2, 7 },;
{ nCol + 5, nHeight },;
{ nCol + 9 + ::aSizes[ n ], nHeight },;
{ nCol + 14 + ::aSizes[ n ], 1 },;
{ nCol + 4, 1 },;
{ nCol + 2, 7 } } )
endif
if n == ::nOption
SelectObject( hDC, hGrayPen )
MoveTo( hDC, nCol, 0 )
LineTo( hDC, nCol + 14 + ::aSizes[ n ], 0 )
MoveTo( hDC, nCol + 1, 1 )
LineTo( hDC, nCol + 14 + ::aSizes[ n ], 1 )
SelectObject( hDC, hLightPen )
MoveTo( hDC, nCol + 1, 2 )
LineTo( hDC, nCol + 6, nHeight - 1 )
SelectObject( hDC, hDarkPen )
LineTo( hDC, nCol + ::aSizes[ n ] + 8, nHeight - 1 )
LineTo( hDC, nCol + ::aSizes[ n ] + 13, 0 )
SetTextColor( hDC, ::nClrText )
SetBkColor( hDC, ::nClrPane )
DrawText( hDC, ::aPrompts[ n ],;
{ 1, nCol + 4, 15, nCol + 5 + ::aSizes[ n ] + 5 },;
nOr( DT_CENTER, DT_VCENTER ) )
else
SetTextColor( hDC, GetSysColor( COLOR_INACTIVECAPTIONTEXT ) )
SetBkColor( hDC, GetSysColor( COLOR_INACTIVECAPTION ) )
DrawText( hDC, ::aPrompts[ n ],;
{ 2, nCol + 3, 19, nCol + 5 + ::aSizes[ n ] + 6 },;
nOr( DT_CENTER, DT_VCENTER ) )
endif
nCol += ::aSizes[ n ] + 4 + 6
if ( nCol ) > ::nWidth
lNeedButtons := .t.
exit
endif
next
if ! Empty( ::oBtnLeft )
if ::nOffset > 1 .or. lNeedButtons
::oBtnLeft:Move( 4, ::nWidth - 24, 11, 15, .t. )
::oBtnRight:Move( 4, ::nWidth - 25 + 12, 11, 15, .t. )
::oBtnLeft:Show()
::oBtnRight:Show()
::oBtnLeft:Paint()
::oBtnRight:Paint()
if ::nOffset > 1
::oBtnLeft:Enable()
else
::oBtnLeft:Disable()
endif
if ! lNeedButtons
::oBtnRight:Disable()
else
::oBtnRight:Enable()
endif
else
::oBtnLeft:Hide()
::oBtnRight:Hide()
endif
endif
SelectObject( hDC, hOldPen )
SelectObject( hDC, hOldFont )
SelectObject( hDC, hOldBrush )
DeleteObject( hDarkPen )
DeleteObject( hGrayPen )
DeleteObject( hLightPen )
DeleteObject( hDarkBrush )
DeleteObject( hGrayBrush )
::DispEnd( aInfo )
return nil
mi daresti solo una dritta a disegnare il rettangolo , e il bitmap in mezzo poi i prompt non dovrebbero essere difficili ...
grazie
Best Regards, Saludos
Falconi Silvio
Falconi Silvio
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Non mi sono spiegato bene: intendevo dire di non utilizzare oggetti per disegnare i bitmaps ma farlo direttamente con la funzione PalBmpDraw() nell'evento ON PAINT di una finestra o di un tuo controllo.Silvio wrote:si ma Linares mi ha detto di creare un user control
Anche a me mi sembra la soluzione giusta
Non riesco a vedere nessuna immagine.Silvio wrote:cioè dovrei disegnare questo inizialmente
[img=http://img387.imageshack.us/img387/1993/linearoadb2ah.png]
Per il rettangolo usa le API MoveTo() e LineTo() mentre per il bitmap la funzione PalBmpDraw().Silvio wrote:mi daresti solo una dritta a disegnare il rettangolo , e il bitmap in mezzo
EMG
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
bene mi sono creato una funzione per disegnare le linee
con questo metodo sarebbe più facile a disegnare ste linee
DrawLine( hDC, 0, 0 , 0,100,CLR_BLACK) peresempio
Adesso però ho un problema
per intenderci la classe tab disegna il suo controllo in fondo mentre io voglio disegnarlo sopra dove è l'istruzione che fa questo ?
Code: Select all
Function DrawLine( hDC, x, y , high, widht, color)
LOCAL n, hPen, hOldPen
hPen := CreatePen( 0, 2, color )
hOldPen := SelectObject( hDc, hPen )
MoveTo( hDC, y, x )
LineTo( hDC, widht, high)
SelectObject( hDc, hOldPen )
DeleteObject( hPen )
return NIL
DrawLine( hDC, 0, 0 , 0,100,CLR_BLACK) peresempio
Adesso però ho un problema
per intenderci la classe tab disegna il suo controllo in fondo mentre io voglio disegnarlo sopra dove è l'istruzione che fa questo ?
Best Regards, Saludos
Falconi Silvio
Falconi Silvio
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Cosa ti impedisce di creartelo?Silvio wrote:con questo metodo sarebbe più facile a disegnare ste linee
DrawLine( hDC, 0, 0 , 0,100,CLR_BLACK) peresempio
Immagino sia solo una questione di coordinate.Silvio wrote:Adesso però ho un problema
per intenderci la classe tab disegna il suo controllo in fondo mentre io voglio disegnarlo sopra dove è l'istruzione che fa questo ?
EMG
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
ok
ho trovato l'errore c'era scritto ownd:bottom() o qualcosa di simile e quindi adesso va ok
ho inserito anche la bitmap al centro : se vedi il metodo new per intenderci
Quindi adesso la classe disegna la linea bene o male e cmq fno a qui ci siamo ( poi la potrei modificare alla fine)
io la richiamo semplicemente con
@ 0,0 Rbook oRB of oWnd
niente di piu' facile
adesso devo mettere i get
e dove li metto ?
cioè se li metto in metodo Paint poi li posso editare ?
oppure li devo inserire nel metodo New/redefine?
ho trovato l'errore c'era scritto ownd:bottom() o qualcosa di simile e quindi adesso va ok
ho inserito anche la bitmap al centro : se vedi il metodo new per intenderci
Quindi adesso la classe disegna la linea bene o male e cmq fno a qui ci siamo ( poi la potrei modificare alla fine)
io la richiamo semplicemente con
@ 0,0 Rbook oRB of oWnd
niente di piu' facile
adesso devo mettere i get
e dove li metto ?
cioè se li metto in metodo Paint poi li posso editare ?
oppure li devo inserire nel metodo New/redefine?
Best Regards, Saludos
Falconi Silvio
Falconi Silvio