Can anyone explain why the routine below has 2 problems
1. The Labels BACKCOLOR property had to be "//'d" out and the setproperty used instead. Why did I have to do this?
2. The Form_1 window has an IMAGE photo declared right after the windows. Most controls appear on top of the IMAGE as intended.
However, the Labels generated in this function are masked by the IMAGE. If I delete the IMAGE I see them on Form_1 as they should be.
Pleas kindly explain why I have there two problems
*-----------------------------------------------
Function Transpose() // called from transpose button
*-----------------------------------------------
*
Local i,j, cValue
For i = 1 to nRows
For j:= 1 to nCols
TransposeOfMatrixArray[j,i] := MatrixArray[i,j]
Next j
Next i
// Show the Result
Form_1.setfocus
For i = 1 to nRows
For j:= 1 to nCols
clabel := "labelT" + alltrim( str(i)) + alltrim(str(j) )
cValue := str(TransposeOfMatrixArray[i,j])
DEFINE label &clabel
Row nGetRow+nTransposeRowOffset+ 62*(i-1)
Col nGetCol+nTransposeColOffset+ 70*(j-1)
// BACKCOLOR {124,252,0}
PARENT Form_1
WIDTH 50
HEIGHT 45
BORDER .T.
VALUE cValue
FONTSIZE 12
END LABEL
//msgstop( "In Transpose")
SetProperty( "Form_1", "labelT" + alltrim( str(i)) + alltrim(str(j) ) , "BackColor" , {124,252,0} )
next j
next i
InverseLabels()
Return
One Function 2 problems
Moderator: Rathinagiri
- serge_girard
- Posts: 3309
- Joined: Sun Nov 25, 2012 2:44 pm
- DBs Used: 1 MySQL - MariaDB
2 DBF - Location: Belgium
- Contact:
Re: One Function 2 problems
Hello Bluebird,
Can you please provide full source?
Serge
Can you please provide full source?
Serge
There's nothing you can do that can't be done...
- vagblad
- Posts: 173
- Joined: Tue Jun 18, 2013 12:18 pm
- DBs Used: MySQL,DBF
- Location: Thessaloniki, Greece
Re: One Function 2 problems
Hello bluebird,
Can't test much without full code, but i would propose the following changes:
1)move the PARENT Form_1 line to the second line of the label control declaration so it will be like that -
DEFINE label &clabel
PARENT Form_1
Row nGetRow+nTransposeRowOffset+ 62*(i-1)
Col nGetCol+nTransposeColOffset+ 70*(j-1)
2)From my experience the controls you declare last always show up on top of the others. So if you want your labels to show on top of your image control then you should declare first the image and then afterwards the label. However do notice that with every refresh of the image your labels will probably hide again.
Referring to the last point it would be awesome if at some point we could have a "strata" property for the controls, defining the level on the screen the control is being designed. For example we could have the following:
background,topmost,low,medium,high.
Using that property we could explicit order a control to be painted at a specific level of the UI.
Best regards
Google translate
Hola bluebird,
No se puede probar sin mucho código completo, pero me gustaría proponer las siguientes modificaciones:
1) mover la línea Form_1 PADRES a la segunda línea de la declaración de control de etiqueta por lo que será de esa manera -
DEFINE etiqueta y CLABEL
PADRES Form_1
Fila nGetRow + nTransposeRowOffset + 62 * (i-1)
Col nGetCol + nTransposeColOffset + 70 * (j-1)
2) A partir de mi experiencia los controles se declaran última siempre aparecen en la parte superior de los otros. Así que si usted quiere que sus etiquetas para mostrar en la parte superior de su control de la imagen, entonces debe declarar primero la imagen y luego después de la etiqueta. Sin embargo se dan cuenta de que con cada actualización de la imagen de las etiquetas es probable que ocultar de nuevo.
En referencia a este último punto, sería increíble si en algún momento podríamos tener una propiedad "estratos" para los controles, que define el nivel en la pantalla del control se está diseñando. Por ejemplo podríamos tener lo siguiente:
fondo, más alta, baja, media, alta.
El uso de esa propiedad podríamos orden explícita un mando a pintar en un nivel específico de la interfaz de usuario.
Atentamente
Can't test much without full code, but i would propose the following changes:
1)move the PARENT Form_1 line to the second line of the label control declaration so it will be like that -
DEFINE label &clabel
PARENT Form_1
Row nGetRow+nTransposeRowOffset+ 62*(i-1)
Col nGetCol+nTransposeColOffset+ 70*(j-1)
2)From my experience the controls you declare last always show up on top of the others. So if you want your labels to show on top of your image control then you should declare first the image and then afterwards the label. However do notice that with every refresh of the image your labels will probably hide again.
Referring to the last point it would be awesome if at some point we could have a "strata" property for the controls, defining the level on the screen the control is being designed. For example we could have the following:
background,topmost,low,medium,high.
Using that property we could explicit order a control to be painted at a specific level of the UI.
Best regards
Google translate
Hola bluebird,
No se puede probar sin mucho código completo, pero me gustaría proponer las siguientes modificaciones:
1) mover la línea Form_1 PADRES a la segunda línea de la declaración de control de etiqueta por lo que será de esa manera -
DEFINE etiqueta y CLABEL
PADRES Form_1
Fila nGetRow + nTransposeRowOffset + 62 * (i-1)
Col nGetCol + nTransposeColOffset + 70 * (j-1)
2) A partir de mi experiencia los controles se declaran última siempre aparecen en la parte superior de los otros. Así que si usted quiere que sus etiquetas para mostrar en la parte superior de su control de la imagen, entonces debe declarar primero la imagen y luego después de la etiqueta. Sin embargo se dan cuenta de que con cada actualización de la imagen de las etiquetas es probable que ocultar de nuevo.
En referencia a este último punto, sería increíble si en algún momento podríamos tener una propiedad "estratos" para los controles, que define el nivel en la pantalla del control se está diseñando. Por ejemplo podríamos tener lo siguiente:
fondo, más alta, baja, media, alta.
El uso de esa propiedad podríamos orden explícita un mando a pintar en un nivel específico de la interfaz de usuario.
Atentamente
Vagelis Prodromidis
Email: vagblad@gmail.com, Skype: vagblad
Email: vagblad@gmail.com, Skype: vagblad
Re: One Function 2 problems
Hello Serge
Here is my whole file. It is at the beginning stage so don't be surprised if its not professional
#include "minigui.ch"
*------------------------
Function Main()
*------------------------
PUBLIC nTransposeRowOffset:=0, nTransposeColOffset:=400, nInverseRowOffset:= 350, nInverseColOffset:=0
PUBLIC NGETROW := 235,nGetCol:=235, nRows:=3, nCols:=3, nButtonRow:=65
Public MatrixArray := array(nRows,nCols)
Public TransposeOfMatrixArray := array(nRows,nCols)
Public InverseOfMatrixArray := array(nRows,nCols)
PUBLIC lUseTestMatrix:=.T., lIsFIrstEntry:=.T. ,nInstructionRow:=800
PUBLIC aTransposeColor :={100,149,237}, aInverseColor :={100,149,137}
PUBLIC aMatrixTest := { { 4, 0, 1 }, ; // values used to test this program
{ 7, 3, 6 }, ;
{ 2, 0, 5 } ;
}
DEFINE WINDOW Form_1 ;
AT 50,50 ;
WIDTH 1040 HEIGHT 920 ;
TITLE 'MiniGUI Label Demo' ;
MAIN
@ 20,20 IMAGE Photo ;
PARENT Form_1 ;
PICTURE "fiberpaper.jpg" ;
TRANSPARENT ;
WIDTH 1000 ;
HEIGHT 900
DEFINE GETBOX MatrixEntries
PARENT Form_1
ROW 3
COl 3
VALUE 01
visible .F.
PICTURE "99"
BACKCOLOR {{255,255,255},{255,255,200},{200,255,255}}
FONTCOLOR {{0,0,0},{255,255,200},{0,0,255}}
END GETBOX
DEFINE BUTTON StartButton
PARENT Form_1
ROW nInstructionRow
COL 375
CAPTION "Click to Start"
FONTSIZE 18
ONCLICK {||(SELECTINPUT() )}
WIDTH 200
HEIGHT 35
END BUTTON
DEFINE BUTTON Transpose
ROW nButtonRow
COL 65
PARENT Form_1
CAPTION "Click to Transpose"
FONTSIZE 18
FONTCOLOR BLUE
visible .F.
ONCLICK {||(Transpose() )}
WIDTH 200
HEIGHT 35
END BUTTON
for j:=1 to nRows
for k := 1 TO nCols
clabel := "lab_l" + alltrim( str(j)) + alltrim(str(k) )
nID := j*10+k
DEFINE label &clabel
Row nGetRow+ 62*(j-1)
Col nGetCol+70*(k-1)
ID nID
ON CLICK {|| (This.Value :=Form_1.MatrixEntries.value) ,storeIt( "Form_1",This.Name,This.Value) }
PARENT Form_1
WIDTH 50
HEIGHT 45
BORDER .T.
VALUE clabel
BACKCOLOR {0,191,255}
FONTSIZE 10
END LABEL
next k
next j
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return Nil
*-----------------------------------------------
Function StoreIt(ParentForm,ControlName,cValue)
*-----------------------------------------------
Local ID := GetControlId ( ControlName, ParentForm ),x,y
x := val(substr(hb_ntos(ID),1,1))
y := val(substr(hb_ntos(ID),2,1))
MatrixArray[x,y] := cValue
Return
*-----------------------------------------------
Function Transpose() // called from transpose button
*-----------------------------------------------
*
Local i,j, cValue
For i = 1 to nRows
For j:= 1 to nCols
TransposeOfMatrixArray[j,i] := MatrixArray[i,j]
Next j
Next i
// Show the Result
Form_1.setfocus
For i = 1 to nRows
For j:= 1 to nCols
clabel := "labelT" + alltrim( str(i)) + alltrim(str(j) )
cValue := str(TransposeOfMatrixArray[i,j])
DEFINE label &clabel
PARENT Form_1
Row nGetRow+nTransposeRowOffset+ 62*(i-1)
Col nGetCol+nTransposeColOffset+ 70*(j-1)
// BACKCOLOR {124,252,0}
WIDTH 50
HEIGHT 45
BORDER .T.
VALUE cValue
FONTSIZE 12
END LABEL
SetProperty( "Form_1", "labelT" + alltrim( str(i)) + alltrim(str(j) ) , "BackColor" , {124,252,0} )
next j
next i
InverseLabels()
Return
*-----------------------------------------------
Function InverseLabels()
*-----------------------------------------------
Form_1.setfocus
For i = 1 to nRows
For j:= 1 to nCols
clabel := "labelI" + alltrim( str(i)) + alltrim(str(j) )
cValue := clabel //str(InverseOfMatrixArray[i,j])
DEFINE label &clabel
PARENT Form_1
Row nGetRow+nInverseRowOffset+ 62*(i-1)
Col nGetCol+nInverseColOffset+ 70*(j-1)
// BACKCOLOR {124,252,0}
WIDTH 50
HEIGHT 45
BORDER .T.
VALUE cValue
FONTSIZE 12
END LABEL
SetProperty( "Form_1", "labelI" + alltrim( str(i)) + alltrim(str(j) ) , "BackColor" , {224,52,70} )
next j
next i
SetProperty( "Form_1", "Photo" , "visible" , .F. )
Return NIL
*-----------------------------------------------
Function MatrixDeterminant()
*-----------------------------------------------
Local nDet
nDet:= MatrixArray[1,1]*(MatrixArray[2,2]*MatrixArray[3,3]-MatrixArray[2,3]*MatrixArray[3,2])
nDet:=nDet+MatrixArray[1,2]*(MatrixArray[2,1]*MatrixArray[3,3]-MatrixArray[3,1]*MatrixArray[2,3])
nDet:=nDet+MatrixArray[1,3]*(MatrixArray[2,1]*MatrixArray[3,2]-MatrixArray[3,1]*MatrixArray[2,2])
*
RETURN nDet
*-----------------------------------------------
FUNCTION SELECTINPUT() //Called from Startup Button
*-----------------------------------------------
LOCAL lUseSubs:=.t., cYesNo
If lIsFIrstEntry
DEFINE WINDOW Form_2 ;
AT 290,290 ;
WIDTH 400 ;
HEIGHT 300 ;
BACKCOLOR GREEN ;
TITLE "Choose Data Source"
@ 50 ,100 BUTTON Button_1 ;
PARENT Form_2;
CAPTION "Click to Use Test Values" ;
ONCLICK {||(lUseTestData:=.t.,BackToForm_1b())} ;
WIDTH 200 ;
FONT "Arial" SIZE 12 ;
HEIGHT 35
@ 100 ,100 BUTTON Button_2 ;
PARENT Form_2;
CAPTION "Click to enter New Values" ;
ONCLICK {||(lUseTestData:=.f.,BackToForm_1b())} ;
FONT "Arial" SIZE 12 ;
WIDTH 200 ;
HEIGHT 35
END WINDOW
ACTIVATE WINDOW Form_2
Else
Form_2.setfocus
Endif //lIsFIrstEntry
lIsFirstEntry := .F.
RETURN NIL
*-----------------------------------------------
FUNCTION BackToForm_1b() //called from SelectInput
*-----------------------------------------------
LOCAL cYesNo,i,j,cI,cJ
Form_1.setfocus
if lUseTestData //
For i:=1 to nRows
For j := 1 TO nCols
cI:=alltrim(str(i));cJ:=alltrim(str(j))
SetProperty( "Form_1", "Lab_l"+cI+cJ , "Value" , alltrim(str(aMatrixTest[i,j])) )
MatrixArray[i,j]:= aMatrixTest[i,j]
// msgstop("Lab_l"+cI+cJ+":"+str(aMatrixTest[i,j]) )
Next i
Next j
else
Form_1.MatrixEntries.visible:=.T. //get numbers
Form_1.MatrixEntries.setfocus
endif
Form_1.startbutton.visible:= .F.
Form_1.Transpose.visible:=.T.
RETURN NIL
Here is my whole file. It is at the beginning stage so don't be surprised if its not professional
#include "minigui.ch"
*------------------------
Function Main()
*------------------------
PUBLIC nTransposeRowOffset:=0, nTransposeColOffset:=400, nInverseRowOffset:= 350, nInverseColOffset:=0
PUBLIC NGETROW := 235,nGetCol:=235, nRows:=3, nCols:=3, nButtonRow:=65
Public MatrixArray := array(nRows,nCols)
Public TransposeOfMatrixArray := array(nRows,nCols)
Public InverseOfMatrixArray := array(nRows,nCols)
PUBLIC lUseTestMatrix:=.T., lIsFIrstEntry:=.T. ,nInstructionRow:=800
PUBLIC aTransposeColor :={100,149,237}, aInverseColor :={100,149,137}
PUBLIC aMatrixTest := { { 4, 0, 1 }, ; // values used to test this program
{ 7, 3, 6 }, ;
{ 2, 0, 5 } ;
}
DEFINE WINDOW Form_1 ;
AT 50,50 ;
WIDTH 1040 HEIGHT 920 ;
TITLE 'MiniGUI Label Demo' ;
MAIN
@ 20,20 IMAGE Photo ;
PARENT Form_1 ;
PICTURE "fiberpaper.jpg" ;
TRANSPARENT ;
WIDTH 1000 ;
HEIGHT 900
DEFINE GETBOX MatrixEntries
PARENT Form_1
ROW 3
COl 3
VALUE 01
visible .F.
PICTURE "99"
BACKCOLOR {{255,255,255},{255,255,200},{200,255,255}}
FONTCOLOR {{0,0,0},{255,255,200},{0,0,255}}
END GETBOX
DEFINE BUTTON StartButton
PARENT Form_1
ROW nInstructionRow
COL 375
CAPTION "Click to Start"
FONTSIZE 18
ONCLICK {||(SELECTINPUT() )}
WIDTH 200
HEIGHT 35
END BUTTON
DEFINE BUTTON Transpose
ROW nButtonRow
COL 65
PARENT Form_1
CAPTION "Click to Transpose"
FONTSIZE 18
FONTCOLOR BLUE
visible .F.
ONCLICK {||(Transpose() )}
WIDTH 200
HEIGHT 35
END BUTTON
for j:=1 to nRows
for k := 1 TO nCols
clabel := "lab_l" + alltrim( str(j)) + alltrim(str(k) )
nID := j*10+k
DEFINE label &clabel
Row nGetRow+ 62*(j-1)
Col nGetCol+70*(k-1)
ID nID
ON CLICK {|| (This.Value :=Form_1.MatrixEntries.value) ,storeIt( "Form_1",This.Name,This.Value) }
PARENT Form_1
WIDTH 50
HEIGHT 45
BORDER .T.
VALUE clabel
BACKCOLOR {0,191,255}
FONTSIZE 10
END LABEL
next k
next j
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return Nil
*-----------------------------------------------
Function StoreIt(ParentForm,ControlName,cValue)
*-----------------------------------------------
Local ID := GetControlId ( ControlName, ParentForm ),x,y
x := val(substr(hb_ntos(ID),1,1))
y := val(substr(hb_ntos(ID),2,1))
MatrixArray[x,y] := cValue
Return
*-----------------------------------------------
Function Transpose() // called from transpose button
*-----------------------------------------------
*
Local i,j, cValue
For i = 1 to nRows
For j:= 1 to nCols
TransposeOfMatrixArray[j,i] := MatrixArray[i,j]
Next j
Next i
// Show the Result
Form_1.setfocus
For i = 1 to nRows
For j:= 1 to nCols
clabel := "labelT" + alltrim( str(i)) + alltrim(str(j) )
cValue := str(TransposeOfMatrixArray[i,j])
DEFINE label &clabel
PARENT Form_1
Row nGetRow+nTransposeRowOffset+ 62*(i-1)
Col nGetCol+nTransposeColOffset+ 70*(j-1)
// BACKCOLOR {124,252,0}
WIDTH 50
HEIGHT 45
BORDER .T.
VALUE cValue
FONTSIZE 12
END LABEL
SetProperty( "Form_1", "labelT" + alltrim( str(i)) + alltrim(str(j) ) , "BackColor" , {124,252,0} )
next j
next i
InverseLabels()
Return
*-----------------------------------------------
Function InverseLabels()
*-----------------------------------------------
Form_1.setfocus
For i = 1 to nRows
For j:= 1 to nCols
clabel := "labelI" + alltrim( str(i)) + alltrim(str(j) )
cValue := clabel //str(InverseOfMatrixArray[i,j])
DEFINE label &clabel
PARENT Form_1
Row nGetRow+nInverseRowOffset+ 62*(i-1)
Col nGetCol+nInverseColOffset+ 70*(j-1)
// BACKCOLOR {124,252,0}
WIDTH 50
HEIGHT 45
BORDER .T.
VALUE cValue
FONTSIZE 12
END LABEL
SetProperty( "Form_1", "labelI" + alltrim( str(i)) + alltrim(str(j) ) , "BackColor" , {224,52,70} )
next j
next i
SetProperty( "Form_1", "Photo" , "visible" , .F. )
Return NIL
*-----------------------------------------------
Function MatrixDeterminant()
*-----------------------------------------------
Local nDet
nDet:= MatrixArray[1,1]*(MatrixArray[2,2]*MatrixArray[3,3]-MatrixArray[2,3]*MatrixArray[3,2])
nDet:=nDet+MatrixArray[1,2]*(MatrixArray[2,1]*MatrixArray[3,3]-MatrixArray[3,1]*MatrixArray[2,3])
nDet:=nDet+MatrixArray[1,3]*(MatrixArray[2,1]*MatrixArray[3,2]-MatrixArray[3,1]*MatrixArray[2,2])
*
RETURN nDet
*-----------------------------------------------
FUNCTION SELECTINPUT() //Called from Startup Button
*-----------------------------------------------
LOCAL lUseSubs:=.t., cYesNo
If lIsFIrstEntry
DEFINE WINDOW Form_2 ;
AT 290,290 ;
WIDTH 400 ;
HEIGHT 300 ;
BACKCOLOR GREEN ;
TITLE "Choose Data Source"
@ 50 ,100 BUTTON Button_1 ;
PARENT Form_2;
CAPTION "Click to Use Test Values" ;
ONCLICK {||(lUseTestData:=.t.,BackToForm_1b())} ;
WIDTH 200 ;
FONT "Arial" SIZE 12 ;
HEIGHT 35
@ 100 ,100 BUTTON Button_2 ;
PARENT Form_2;
CAPTION "Click to enter New Values" ;
ONCLICK {||(lUseTestData:=.f.,BackToForm_1b())} ;
FONT "Arial" SIZE 12 ;
WIDTH 200 ;
HEIGHT 35
END WINDOW
ACTIVATE WINDOW Form_2
Else
Form_2.setfocus
Endif //lIsFIrstEntry
lIsFirstEntry := .F.
RETURN NIL
*-----------------------------------------------
FUNCTION BackToForm_1b() //called from SelectInput
*-----------------------------------------------
LOCAL cYesNo,i,j,cI,cJ
Form_1.setfocus
if lUseTestData //
For i:=1 to nRows
For j := 1 TO nCols
cI:=alltrim(str(i));cJ:=alltrim(str(j))
SetProperty( "Form_1", "Lab_l"+cI+cJ , "Value" , alltrim(str(aMatrixTest[i,j])) )
MatrixArray[i,j]:= aMatrixTest[i,j]
// msgstop("Lab_l"+cI+cJ+":"+str(aMatrixTest[i,j]) )
Next i
Next j
else
Form_1.MatrixEntries.visible:=.T. //get numbers
Form_1.MatrixEntries.setfocus
endif
Form_1.startbutton.visible:= .F.
Form_1.Transpose.visible:=.T.
RETURN NIL
- esgici
- Posts: 4543
- Joined: Wed Jul 30, 2008 9:17 pm
- DBs Used: DBF
- Location: iskenderun / Turkiye
- Contact:
Re: One Function 2 problems
This isn't "official" HMG codebluebird wrote:...
Here is my whole file. ...

pleas ask your question(s) to appropriate forum / news group

Viva HMG

Viva INTERNATIONAL HMG 

- danielmaximiliano
- Posts: 2625
- Joined: Fri Apr 09, 2010 4:53 pm
- Location: Argentina
- Contact:
Re: One Function 2 problems
Hola Bluebird : el ejemplo que publico enHMG pertenece a HMG extended ya que los controles GetBox son de esa distribucion basada en HMG.
para ello le sugiero que se vaya a Yahoo Grupos y pida ser un miembro de esa comunidad y publique ahi el pedido de ayuda ya que HMG no contiene dicho control.
Translate google :
Hello Bluebird: the example belongs to the public enHMG HMG extended since GetBox that controls are HMG-based distribution.
for this I suggest you go to Yahoo Groups and ask to be a member of that community and there publish the request for help since HMG has no such control.
sin mas le dejo el grupo original / without more I leave the original group:
https://groups.yahoo.com/neo/groups/harbourminigui/info
y el grupo en español / and the group in Spanish:
https://es.groups.yahoo.com/neo/groups/ ... ui_es/info
Sr Esgici : intentamos ser amables con todos si una persona por error entra a HMG no mostramos la puerta de salida sino queindicamos el camino a seguir.
Mr. Esgici : we try to be kind to everyone if a person mistakenly enters HMG not show the exit door but indicated the way forward.
Without more cordial greetings to the two ..
para ello le sugiero que se vaya a Yahoo Grupos y pida ser un miembro de esa comunidad y publique ahi el pedido de ayuda ya que HMG no contiene dicho control.
Translate google :
Hello Bluebird: the example belongs to the public enHMG HMG extended since GetBox that controls are HMG-based distribution.
for this I suggest you go to Yahoo Groups and ask to be a member of that community and there publish the request for help since HMG has no such control.
sin mas le dejo el grupo original / without more I leave the original group:
https://groups.yahoo.com/neo/groups/harbourminigui/info
y el grupo en español / and the group in Spanish:
https://es.groups.yahoo.com/neo/groups/ ... ui_es/info
Sr Esgici : intentamos ser amables con todos si una persona por error entra a HMG no mostramos la puerta de salida sino queindicamos el camino a seguir.
Mr. Esgici : we try to be kind to everyone if a person mistakenly enters HMG not show the exit door but indicated the way forward.
Without more cordial greetings to the two ..
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO