FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Form, Memo Y Mas...
Que tal?
Bueno, hay tres cosas que queria saber... 1) Como se puede hacer para que un Form sea transparente? O sea, a lo que me refiero es que si se vea un boton o una imagen que hay encima, pero el fondo se vea transparente. 2) Si tengo un Memo con N lineas y quiero que al apretar un boton me vaya a la linea "i", como puedo hacer esto? Intente con SelStart y con el scrollby y no me funciono. 3) Alguien sabe si hay algun libro de programacion en delphi 3 o mayor para bajar (preferentemente en español???) Gracias. SAlu2 ChristianS |
#2
|
||||
|
||||
En cuanto a lo del formulario transparente prueba con este código de ejemplo:
Código:
procedure TForm1.Button1Click(Sender: TObject); var frmRegion, tempRegion: HRGN; i: Integer; Arect: TRect; begin frmRegion := 0; for I := 0 to ControlCount - 1 do begin { create a region for the control } aRect := Controls[i].BoundsRect; { coordinates have to be window-relative, not client area relative } OffsetRect( aRect, clientorigin.x - left, clientorigin.y - top ); tempRegion := CreateRectRgnIndirect( aRect ); { merge the region with the "summary" region we are building } if frmRegion = 0 then frmRegion := tempRegion else begin CombineRgn( frmRegion, frmRegion, tempRegion, RGN_OR ); DeleteObject( tempRegion ); end; end; { create a region for the caption and menu bar and add it to the summary } tempregion := CreateRectRgn( 0, 0, Width, GetSystemMetrics( SM_CYCAPTION )+ GetSystemMetrics( SM_CYSIZEFRAME ) + GetSystemMetrics( SM_CYMENU ) * Ord(Menu <> Nil)); CombineRgn( frmRegion, frmRegion, tempRegion, RGN_OR ); DeleteObject( tempRegion ); SetWindowRgn( handle, frmRegion, true ); end; No tengo ahora la dirección a mano, sino lo encuentras me lo comunicas. Un Saludo. |
#3
|
|||
|
|||
EL codigo que me pasaste funciona,pero nome oculta la barra con los iconos de cerrar y minimizar. Incluso Poniendo el Borderstyle = none;
Alguna sugerencia? |
#4
|
||||
|
||||
Es muy fácil anula la parte que pinta el caption.
Código:
procedure TForm1.Button1Click(Sender: TObject); var frmRegion, tempRegion: HRGN; i: Integer; Arect: TRect; begin frmRegion := 0; for I := 0 to ControlCount - 1 do begin { create a region for the control } aRect := Controls[i].BoundsRect; { coordinates have to be window-relative, not client area relative } OffsetRect( aRect, clientorigin.x - left, clientorigin.y - top ); tempRegion := CreateRectRgnIndirect( aRect ); { merge the region with the "summary" region we are building } if frmRegion = 0 then frmRegion := tempRegion else begin CombineRgn( frmRegion, frmRegion, tempRegion, RGN_OR ); DeleteObject( tempRegion ); end; end; SetWindowRgn( handle, frmRegion, true ); end; Última edición por marcoszorrilla fecha: 01-06-2003 a las 10:49:13. |
#5
|
|||
|
|||
Que tal?
El procedimiento que me pasate funciona a la perfeccion. Ahora... si en vez de quitar el form, simplemente lo quiero de color "transparente"... En la ayuda de delphi 3 encontre lo siguiente... procedure WMEraseBkgnd(var m: TWMEraseBkgnd); message WM_ERASEBKGND; Muestra este cabezal de procedimiento el cual ponen bajos los "private". Con esto queda el Form "transparente" cuando se ejecuta el programa (aunque en este procedimiento no haya codigo escrito) La cosa es que no se como hacer para volver a invocar esto para qe me vuelta a borrar el form. Bueno, espero que me hayan entendido. SAlu2 ChristianS |
|
|
|