FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index All products support CREAZIONE RADAR PER RALLY
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
CREAZIONE RADAR PER RALLY
Posted: Thu May 11, 2006 07:16 AM

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

Posts: 3107
Joined: Fri Oct 07, 2005 06:28 PM
CREAZIONE RADAR PER RALLY
Posted: Fri May 12, 2006 12:42 AM
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 :
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


@ 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?

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
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
CREAZIONE RADAR PER RALLY
Posted: Fri May 12, 2006 06:41 AM

Ti posso aiutare solo se:

  1. Mi sottoponi un problema alla volta e me lo descrivi in modo sintetico e preciso.

  2. Prepari un esempio minimale che lo mostri e che io possa poi restituirti corretto e funzionante.

EMG

Posts: 3107
Joined: Fri Oct 07, 2005 06:28 PM
CREAZIONE RADAR PER RALLY
Posted: Fri May 12, 2006 09:03 AM

ok te lo preparo dopo xchè adesso sono a scuola.
poi lo metto qui il test ?

Best Regards, Saludos



Falconi Silvio
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
CREAZIONE RADAR PER RALLY
Posted: Fri May 12, 2006 09:39 AM

Sì (oppure lo mandi direttamente alla mia email, come ti pare), ma è essernziale che sia piccolo e compilabile altrimenti non credo che potrò dedicarmici. Sei tu che devi fare lo sforzo iniziale per ridurlo ai minimi termini.

EMG

Posts: 3107
Joined: Fri Oct 07, 2005 06:28 PM
CREAZIONE RADAR PER RALLY
Posted: Fri May 12, 2006 04:02 PM

MA LA CLASSE :TMetaFile() COME SI USA ?
cioè io voglio creare un BMP oBMP con la metafile alla linea 14,30 e la dimensione deve essere 200x100
Non so mi crea un immagine grandiisima...

vabbe faccio il test intanto

Best Regards, Saludos



Falconi Silvio
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
CREAZIONE RADAR PER RALLY
Posted: Fri May 12, 2006 06:04 PM

Forse intendevi dire la classe TBitmap? Comunque ti sconsiglio di utilizzare classi per questo lavoro di "rendering" dei bitmap. Semplicemente disegnali alle giuste coordinate usando la funzione PalBmpDraw() all'interno dell'evento ON PAINT.

EMG

Posts: 3107
Joined: Fri Oct 07, 2005 06:28 PM
CREAZIONE RADAR PER RALLY
Posted: Fri May 12, 2006 10:30 PM
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


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
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
CREAZIONE RADAR PER RALLY
Posted: Fri May 12, 2006 10:38 PM
Silvio wrote:si ma Linares mi ha detto di creare un user control
Anche a me mi sembra la soluzione giusta


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:cioè dovrei disegnare questo inizialmente
[img=http://img387.imageshack.us/img387/1993/linearoadb2ah.png]


Non riesco a vedere nessuna immagine.

Silvio wrote:mi daresti solo una dritta a disegnare il rettangolo , e il bitmap in mezzo


Per il rettangolo usa le API MoveTo() e LineTo() mentre per il bitmap la funzione PalBmpDraw().

EMG
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
CREAZIONE RADAR PER RALLY
Posted: Fri May 12, 2006 10:39 PM

Ora l'immagine la vedo.

EMG

Posts: 3107
Joined: Fri Oct 07, 2005 06:28 PM
CREAZIONE RADAR PER RALLY
Posted: Fri May 12, 2006 11:18 PM
bene mi sono creato una funzione per disegnare le linee
  
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

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 ?
Best Regards, Saludos



Falconi Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 06:28 PM
CREAZIONE RADAR PER RALLY
Posted: Sat May 13, 2006 12:37 AM
hO CREATO IL RETTANGOLO CON TUTTI GLI INTRAMEZZI
PERO ADESSO IL CONTROLLO ME LO CREA CON UNO SPAZIO SOPRA CHE NON RIESCO A TOGLIERE

HO SEGNATO DI ROSSO LO SPAZIO DA TOGLIERE



HAI RICEVUTO I FILES ?[/img]
Best Regards, Saludos



Falconi Silvio
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
CREAZIONE RADAR PER RALLY
Posted: Sat May 13, 2006 11:34 AM
Silvio wrote:con questo metodo sarebbe più facile a disegnare ste linee
DrawLine( hDC, 0, 0 , 0,100,CLR_BLACK) peresempio


Cosa ti impedisce di creartelo?

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 ?


Immagino sia solo una questione di coordinate.

EMG
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
CREAZIONE RADAR PER RALLY
Posted: Sat May 13, 2006 11:35 AM
Silvio wrote:HAI RICEVUTO I FILES ?


Sì, ma non sono l'esempio minimale del problema che ti avevo chiesto. Mi dispiace ma non posso fare il lavoro al posto tuo.

EMG
Posts: 3107
Joined: Fri Oct 07, 2005 06:28 PM
CREAZIONE RADAR PER RALLY
Posted: Sat May 13, 2006 02:23 PM

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?

Best Regards, Saludos



Falconi Silvio