Formularios Con Forma by
Ciberwalter
13/Octubre/2003 (publicado 07/Dic/2003)
Autor: Walter Mart�nez O. (Ciberwalter)
[email protected]
http://www.geocities.com/gnivel4
Despu�s de todo el Guille ten�a raz�n y se me olvid� colocar el c�digo del Formulario Con Forma o m�s bien llamado, "Form as de Form" ustedes se preguntar�n por que le puse ese nombre, la verdad es que yo tambi�n me lo pregunto, le iba a poner un nombre en japon�s pero ser�a m�s enredado a�n.
Con este ejemplo podr�s realizar unos Formularios con Forma Bastante Entretenidos, La Utilizaci�n de este Programa es la Siguiente: Ojo con esto,... Primero Abre el programa... ... Luego Carga Una Imagen desde el Men� Herramientas > Abrir Imagen ... y Luego hechale un vistazo a este tutorial hecho en flash, que explica de forma sencilla como funciona el programa, dicen que una imagen vale m�s que mil palabras pero en este caso, una animaci�n hecha en flash vale m�s que una explicaci�n.
Ver Tutorial hecho en flash ->
Nota del Guille: La p�gina y el fichero Flash est� en un zip: ciberwalter_tutorial.zip 106 KB
Tus Formularios se ver�an as� (Ejemplo):
Option Explicit On ' Esta Opcion abre el VisualBasic6.0 para ver tu formulario Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Dim Raya As String Dim SePuede As String Dim colores Dim i, ter Private Sub Command1_Click() ArribaForm.SelStart = 0 ArribaForm.SelLength = Len(ArribaForm) Clipboard.SetText(ArribaForm.SelText) End Sub ' El funcionamiento de este ejemplo es muy similar que el Area Map by Ciberwalter Private Sub Command2_Click() FormerFRM = Variab & Chr(13) + Chr(10) & ArribaForm & Chr(13) + Chr(10) & "' Estas L�neas de Abajo son innecesarias y puedes borrarlas, s�lo es la imagen de fondo que se carga" & Chr(13) + Chr(10) & "Private Sub Form_Activate()" & Chr(13) + Chr(10) & "Form1.Picture = LoadPicture(App.Path & " & Chr(34) & "\Imagen.jpg" & Chr(34) & ")" & Chr(13) + Chr(10) & "End Sub" Dim Fram, Fram2 Dim f As Long f = FreeFile() Fram = App.Path & "\Tu Forma.frm" Fram2 = App.Path & "\Tu Forma.vbp" ' Estas l�neas escriben el Form de VisualBasic Open Fram For Output As f Print #f, FormerFRM.Text Close(f) Open Fram2 For Output As f Print #f, Text8.Text Close(f) Dim AbrirFRM As Integer AbrirFRM = ShellExecute(Me.hwnd, "Run Project", Fram2, "", "", 3) End Sub Private Sub DelImg_Click() Form1.Picture = Image1.Picture End Sub Private Sub Form_DblClick() Form2.Visible = False Dim Punto1, Punto2, Total1, Punto12, Punto22, Total12, Result1, Result2 Dim Ultimo, Penultimo Dim Ultimo2, Penultimo2 Dim Ultimo3, Penultimo3 Dim Ultimo4, Penultimo4 If SePuede = "True" Then List1.AddItem("lpPoint(" & Cuenta + 1 & ").X =" & Text4 & " + positx") List1.AddItem("lpPoint(" & Cuenta + 1 & ").Y =" & Text3 & " + posity") Penultimo = InStr(List1.List(0), "(") Ultimo = InStr(List1.List(1), "(") Penultimo3 = Left$(List1.List(0), Penultimo) Ultimo3 = Left$(List1.List(1), Ultimo) Penultimo2 = InStr(List1.List(0), ".") Ultimo2 = InStr(List1.List(1), ".") Penultimo4 = Mid$(List1.List(0), Penultimo + 2) Ultimo4 = Mid$(List1.List(1), Ultimo + 2) List1.AddItem(Penultimo3 & Cuenta + 2 & Penultimo4) List1.AddItem(Ultimo3 & Cuenta + 2 & Ultimo4) Punto1 = InStr(List1.List(0), "=") Total1 = Mid$(List1.List(0), Punto1 + 1) Punto2 = InStr(Total1, "+") Result1 = Left$(Total1, Punto2 - 1) Punto12 = InStr(List1.List(1), "=") Total12 = Mid$(List1.List(1), Punto12 + 1) Punto22 = InStr(Total12, "+") Result2 = Left$(Total12, Punto22 - 1) Line (Result1, Result2)-(Text4, Text3), QBColor(colores) Raya = "Nada" Generar.Enabled = True End If End Sub Private Sub Form_Load() colores = 0 Raya = "True" i = -1 Form1.Picture = LoadPicture(App.Path & "\Imagen.jpg") Text7 = App.Path & "\Imagen.jpg" Form2.Visible = True End Sub Private Sub Form_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Raya = "Nada" Then Dim DeseasB DeseasB = MsgBox("Ya Existe una Selecci�n Para Realizar otra y borrar esta presiona ''Nueva Area''", vbOKOnly, "No se Puede") End If If Raya = "False" Then Cuenta = Cuenta + 1 Text3 = Y Text4 = X Line (Text2, Text1)-(Text4, Text3), QBColor(colores) List1.AddItem("lpPoint(" & Cuenta & ").X =" & Text2 & " + positx") List1.AddItem("lpPoint(" & Cuenta & ").Y =" & Text1 & " + posity") Text1 = Text3 Text2 = Text4 SePuede = "True" End If If Raya = "True" Then Text1 = Y Text2 = X Raya = "False" End If End Sub Private Sub Form_Unload(ByVal Cancel As Integer) End End Sub Private Sub Generar_Click() Command2.Enabled = True Command1.Enabled = True Timer2.Enabled = True SePuede = "False" End Sub ' Esto Var�a el color de la l�nea trazada Private Sub mAmarillo_Click() colores = 14 End Sub Private Sub mBlanco_Click() colores = 15 End Sub Private Sub mClose_Click() End End Sub Private Sub mHelp_Click() MsgBox("Formularios Personalizados fue Escrito Por Ciberwalter, Para cualquier felicitaci�n, alago o cualquier gesto de aprecio escriban a mi mail [email protected], o visiten my website www.geocities.com/gnivel4 esta es una modificaci�n de Area Map Shape HTM Hecho por M� (Ciberwalter)jo, jo, jo,", 0, "Acerca de Ciberwalter") End Sub Private Sub mNegro_Click() colores = 0 End Sub Private Sub Mostrar_Click() Frame1.Visible = True Ocultar.Enabled = True Mostrar.Enabled = False End Sub Private Sub mRojo_Click() colores = 12 End Sub Private Sub Ocultar_Click() Frame1.Visible = False Ocultar.Enabled = False Mostrar.Enabled = True End Sub Private Sub Otra_Click() Command2.Enabled = False Command1.Enabled = False Refresh() Form2.Visible = True ArribaForm = "" Timer2.Enabled = False Text.Text = "" Text1.Text = "" Text2.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Text6.Text = "" Area.Text = "" coord.Text = "" List1.Clear() Generar.Enabled = False Cuenta = -1 i = -1 SePuede = "True" Raya = "True" End Sub Private Sub Timer1_Timer() Text5 = List1.ListCount If Form1.WindowState = 2 Then Frame1.Left = 535 Frame1.Height = 533 ArribaForm.Height = 7065 Else Frame1.Left = 272 Frame1.Height = 345 ArribaForm.Height = 4225 End If End Sub Private Sub Timer2_Timer() Do While i < List1.ListCount i = i + 1 ter = List1.List(i) Text = Text & Chr(13) + Chr(10) & ter Loop If Text = "" Then Else Dim coma1, coma2 coord = List1.ListCount / 2 ' Esta variaci�n permite que las coordenadas obtenidas en el List se distribuyan en forma de Puntos� ' Y estos puntos espec�ficos realizan el pol�gono en el formulario Area = "Private Sub DoSetPolygonPoints()" & Chr(13) + Chr(10) & Text & Chr(13) + Chr(10) & "End Sub" ' Esta Mara�a de Letras Raras es el c�digo que crea al pulsar el Bot�n Generar C�digo ' Saben Porque no lo puse m�s f�cil a�adi�ndolo a un textbox, muy sencillo, porque no se me ocurri� ' y porque de esta forma es m�s dif�cil de entender (Que malo soy, ji, ji, ji) ' Colorearla, ni pensarlo!!! ArribaForm = "Private Declare Function ScreenToClient Lib " & Chr(34) & "user32" & Chr(34) & " (ByVal hWnd As Long, lpPoint As POINTAPI) As Long" & Chr(13) + Chr(10) & "Private Declare Function SetWindowRgn Lib " & Chr(34) & "user32" & Chr(34) & " (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long" & Chr(13) + Chr(10) & "Private Declare Function CreatePolygonRgn Lib " & Chr(34) & "gdi32" & Chr(34) & " (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long" & Chr(13) + Chr(10) & Chr(13) + Chr(10) & "Private Type POINTAPI " & Chr(13) + Chr(10) & " X As Long " & Chr(13) + Chr(10) & " Y As Long " & Chr(13) + Chr(10) & " End Type" & Chr(13) + Chr(10) & Chr(13) _ + Chr(10) & "Private Const posity = 22" & Chr(13) + Chr(10) & "Private Const positx = 4" & Chr(13) + Chr(10) & Chr(13) + Chr(10) & "Dim DifferenceX As Single" & Chr(13) + Chr(10) & "Dim DifferenceY As Single" & Chr(13) + Chr(10) & Chr(13) + Chr(10) & "Const MaxPolygonPoints = " & coord & Chr(13) + Chr(10) & Chr(13) + Chr(10) & "Dim lpPoint(MaxPolygonPoints) As POINTAPI" & Chr(13) + Chr(10) & Chr(13) + Chr(10) & "Private Sub Form_Load()" & Chr(13) + Chr(10) & " DoSetPolygonPoints" & Chr(13) + Chr(10) & " SetWindowRgn hWnd, CreatePolygonRgn(lpPoint(0), MaxPolygonPoints, 0), True" & Chr(13) + Chr(10) & "End Sub" & Chr(13) + Chr(10) & Chr(13) + Chr(10) & Area & Chr(13) + Chr(10) & Chr(13) + Chr(10) & _ "Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)" & Chr(13) + Chr(10) & " If Button = 1 Then" & Chr(13) + Chr(10) & " If Timer1.Interval > 0 Then" & Chr(13) + Chr(10) & " DifferenceX = X" & Chr(13) + Chr(10) & " DifferenceY = Y" & Chr(13) + Chr(10) & " Timer1.Interval = 0" & Chr(13) + Chr(10) & " End If" & Chr(13) + Chr(10) & " ElseIf Button = 2 Then" & Chr(13) + Chr(10) & " Form1.PopupMenu MenuM" & Chr(13) + Chr(10) & " End If" & Chr(13) + Chr(10) & "End Sub" & Chr(13) + Chr(10) & Chr(13) + Chr(10) & "Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)" & _ Chr(13) + Chr(10) & " If Button = 1 Then" & Chr(13) + Chr(10) & " If Timer1.Interval = 0 Then" & Chr(13) + Chr(10) & " Form1.Left = Form1.Left + (X - DifferenceX)" & Chr(13) + Chr(10) & " Form1.Top = Form1.Top + (Y - DifferenceY)" & Chr(13) + Chr(10) & " DoEvents" & Chr(13) + Chr(10) & " End If" & Chr(13) + Chr(10) & " End If" & Chr(13) + Chr(10) & "End Sub" & Chr(13) + Chr(10) & _ "Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)" & Chr(13) + Chr(10) & " If Timer1.Interval = 0 Then" & Chr(13) + Chr(10) & " Timer1.Interval = 2" & Chr(13) + Chr(10) & " End If" & Chr(13) + Chr(10) & "End Sub" & Chr(13) + Chr(10) & "Private Sub mCerrar_Click()" & Chr(13) + Chr(10) & "End" & Chr(13) + Chr(10) & "End Sub" End If End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''' MENU ABRIR GUARDAR '''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
No lo pondr� porque no es tan necesario y adem�s esta en el otro c�digo
Descargar el C�digo-> Formularios con Forma ciberwalter_FormAsDeForm.zip 106 KB