Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-05-2005
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 22
ebeltete Va por buen camino
personalizar un opendialog

Estoy creando un componente heredado de topendialog, la idea es poder ponerle al opendialog una serie de botones y algun chekbox, con el cual pueda hacer preview de videos y de archivos de audio, alguien me puede dar una idea de como lo puedo hacer, logre algo pero no estoy convencido, gracias.
Responder Con Cita
  #2  
Antiguo 05-05-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
No sé si será posible

Hola,

No sé si será posible hacer lo que quieres sencillamente heredando de TOpenDialog. Ciertos componentes que he usado alguna vez que, digamos, ampliaban las capacidades de un diálogo estándar de Windows para abrir y/o guardar archivos lo que hacían era implementar dicha funcionalidad en un formulario "aparte".

O sea, utilizan un formulario en donde recrean y amplian las capacidades de los diálogos estándar para abrir y/o guardar archivos que encontramos a nuestra disposición en Delphi: no heredan de TOpenDialog.

Un ejemplo de componentes que cuenta con diálogos "no estándar" a que me refiero podrían ser los "Raize Components": si hechas un vistazo a los mismos, aunque sea la versión "Trial" conque cuentas, seguramente puedas hacerte idea de lo que estoy tratando de decir.

Por otro lado, tal vez esté equivocado y alguien pueda hacérmelo ver, lo cual sería estupendo para ti y no menos para mí.
Responder Con Cita
  #3  
Antiguo 05-05-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Otro ejemplo de un diálogo no estándar está en el mismo Delphi. El TOpenPictureDialog y TSavePictureDialog agregan la capacidad de previsualizar una imagen.

El código fuente lo pueden ver en la unidad ExtDlgs.pas

// Saludos
Responder Con Cita
  #4  
Antiguo 05-05-2005
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 22
ebeltete Va por buen camino
En realidad estoy logrando algo justamente con el topenpicturedialog, pero en algun rengloes del codigo me tranco, ya he podido agregar una serie de botones y hacer determinadas cosas con ellos, voy a probar con Raize Components, gracias
Responder Con Cita
  #5  
Antiguo 06-05-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Habría entonces más que decir...

Hola,

Después de lo indicado por roman acerca de la existencia de TOpenPictureDialog, que hereda de TOpenDialog, la verdad es que ya no estoy tan seguro de que para hacer lo que se persigue (vistas previas de archivos de vídeo, por ejemplo) tuvieran que necesitarse "nuevos formularios" que, de algún modo, implementasen todo desde un principio, prácticamente, como dejo entrever arriba que se hace (probablemente no del todo) en los diálogos de los componentes Raize.

Quiero decir que he echado un vistazo al componente TOpenPictureDialog y este no se anda creando nuevos formularios ni mucho menos, sino que, a partir del TOpenDialog consigue ampliar las capacidades de este último justamente hasta conseguir lo que se trata de conseguir.

A ver si me explico: quiero decir que se me ha escapado por completo la capacidad de heredar no pocas características de componentes ya preparados, y hacer esto hasta límites que no podía sospechar, sin duda, porque no he heredado nada en mi vida y claro está, esto se nota...
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 06-05-2005 a las 09:10:01. Razón: (corrección del texto)
Responder Con Cita
  #6  
Antiguo 06-05-2005
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 22
ebeltete Va por buen camino
A partir del "openpicturedialog" he logrado crear muchas cosas, pero realmente no las tengo muy claras..
En el openpicturedialog hay un TPanel, el cual es el "contenedor" de los botones y todo lo que yo le he agregado, pero no se como modifico el tamaño del opendialog, siempre me queda con el tamaño del topenpicturedialog, puedo modificar en el lugar donde poner el tpanel pero siempre en un topenpicturedialog con el mismo tamaño, no logro darme cuenta donde es que modifica el tamaño del opendialog, se entiende?
Un abrazo y muchas gracias por sus respuestas
Responder Con Cita
  #7  
Antiguo 07-05-2005
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Un ejemplo de extender un opendialog standar esta en el programa mirc (DCC send)..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #8  
Antiguo 08-05-2005
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 22
ebeltete Va por buen camino
Donde esta "programa mirc (DCC send)..", esta en los demos de Delphi?, yo tengo Delphi 5
Responder Con Cita
  #9  
Antiguo 09-05-2005
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Losiento no me explique bien; el mirc es un cliente de servidores escrito en C++ por un egipcio. Si lo descargas y instalas veras pinchando en esa opcion un opendialog pero con cosas añadidas. Ahora el codigo como se hizo es otra historia. Solo queria decir q el opendialog es "customized" mediante API windows..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #10  
Antiguo 11-05-2005
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 22
ebeltete Va por buen camino
A partir de openpicturedialog estoy creando un openaudiodialog, el tema es que no logro decifrar como modifica el tamaño del opendialog, está en estas lineas
function TOpenaudioDialog.Execute;
begin
if NewStyleControls and not (ofOldStyleDialog in Options) then
Template := 'DLGTEMPLATE'
else
Template := nil;
Result :=inherited Execute;
end;

Particularmente es Template := 'DLGTEMPLATE'
Con Template := nil el opendialog queda con el tamaño normal, y si es Template := 'DLGTEMPLATE' el opendialog aparece mas grande, el tema es que en definitiva no se que es TEMPLATE
Responder Con Cita
  #11  
Antiguo 11-05-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
En lo poco que entiendo del tema te puedo comentar que en

Template := 'DLGTEMPLATE'

'DLGTEMPLATE' se refiere a un recurso que se compila junto con la aplicación en donde se define justamente la plantilla del cuadro de diálogo que vas a usar.

Aunque la VCL de Delphi generalmente nos evita meternos en estos detalles, tras bambalinas todos los cuadros de diálogo en Windows se definen mediante estas plantillas en las que uno especifica las dimensiones y los controles que contienen.

En el caso del OpenPictureDialog, el recurso se incluye en la línea:

{$R ExtDlgs.res}

que está justo antes del constructor de la clase, y hace referencia al archivo ExtDlgs.rc que se encuentra en la misma carpeta donde está ExtDlgs.pas y cuyo contenido es:

Código:
DLGTEMPLATE DIALOG 0, 0, 316, 76
STYLE 0x404L | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS
FONT 8, "MS Sans Serif"
LANGUAGE LANG_NEUTRAL , SUBLANG_NEUTRAL
{
 LTEXT "", 1119, 0, 0, 204, 76, SS_LEFT | WS_CHILD | NOT WS_VISIBLE | WS_GROUP
}

PREVIEWGLYPH BITMAP
{
 '42 4D F6 00 00 00 00 00 00 00 76 00 00 00 28 00'
 '00 00 10 00 00 00 10 00 00 00 01 00 04 00 00 00'
 '00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00'
 '00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80'
 '00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
 '00 00 80 80 80 00 C0 C0 C0 00 00 00 FF 00 00 FF'
 '00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
 '00 00 FF FF FF 00 33 33 33 33 33 33 33 33 00 00'
 '00 00 00 00 33 00 0F FF FF FF FF F0 30 00 0F FF'
 'FF FF 00 00 00 03 0F FF FF F0 78 87 00 33 0F FF'
 'FF 07 88 E7 F0 33 0F FF FF 08 88 87 80 33 0F FF'
 'FF 08 E8 87 80 33 0F FF FF 07 EE 87 F0 33 0F FF'
 'FF F0 78 87 03 33 0F FF FF FF 00 00 33 33 0F FF'
 'FF FF FF F0 33 33 0F FF FF FF 00 00 33 33 0F FF'
 'FF FF 08 03 33 33 0F FF FF FF 00 33 33 33 00 00'
 '00 00 03 33 33 33'
}
Me parece que la primera línea:

DLGTEMPLATE DIALOG 0, 0, 316, 76

es donde se indican las dimensiones del cuadro.

// Saludos
Responder Con Cita
  #12  
Antiguo 11-05-2005
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 22
ebeltete Va por buen camino
como manejo los archivos *.res y *.rc ?????
Los *.rc los abro con editor de texto o con el propio Delphi pero los .res no se como generarlo
Responder Con Cita
  #13  
Antiguo 11-05-2005
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 22
ebeltete Va por buen camino
El archivo .res se crea a partir del .rc ?
Si es así como lo hago
Responder Con Cita
  #14  
Antiguo 12-05-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Mira que eché un vistazo al código fuente del TOpenPictureDialog..., pues nada... de lo primero que hize fue quitar la "llamada" al archivo ".res" que, como dice roman, existe en el mismo.

Tratando de cambiar el tamaño del formulario a partir de lo dicho por roman, he podido comprobar que cambiando el supuesto ancho y alto que aparecen en la primera línea del archivo "extdlgs.rc" no parece poderse hacer más grande el formulario usado por TOpenPictureDialog, bien como parecía.

La verdad es que no entiendo muy bien el para qué del archivo "extdlgs.rc", puesto que lo que se me ocurre es que sea el "Script" del archivo "extdlgs.res".

Este último archivo está creado con el programa Borland Resource Workshop, pero, tenía a mano el Resource Hacker de Angus Johnson y, después de abrir "extdlgs.res" con el mismo, puede verse que contiene un "Bitmap", que corresponde a la imagen del "TSpeedButton" de la vista previa del diálogo de tipo "TOpenPictureDialog", y un formulario, en cuyo interior hay un panel, u otro tipo de control "similar" (?).

Dicho "panel" se ve que contiene el grupo de controles que en el diálogo "TOpenPictureDialog" permite seleccionar, propiamente, uno o varios archivos de imagen. El panel está situado en el formulario de tal modo que ocupa la parte superior izquierda del mismo, y su tamaño se adaptará después al tamaño del formulario que lo contiene.

En definitiva, puede variarse tanto el tamaño del panel como el tamaño del propio formulario (desde Resource Hacker), y, tras guardar el archivo "extdlgs.res" que los contiene, a partir de ese momento, TOpenPictureDialog se muestra más grande o más pequeño, según qué hiciéramos antes.

Todo esto probado muy someramente: no sé hasta qué punto puede cambiarse el tamaño del formulario que encontramos en el archivo "extdlgs.res", o en cuánto y de qué manera afecta esto a la creación de controles en el mismo ya desde Delphi, derivando de TOpenPictureDialog.

Todo esto me da que pensar para qué usar dichos archivos de recursos, si es que son más sencillo de actualizar, si es que son más "ligeros", si es que se hace por motivos que no puedo llegar siquiera imaginar, porque, de plantearme un componente como TOpenPictureDialog, al menos hasta hoy, no se me hubiera ocurrido hacerlo como en Delphi, lo que no deja en muy buen lugar mis "ideas" (de bombero).

Por cierto, en PROMETHEUS pueden conseguirse lo que parece ser un manual de ayuda en español para el programa Borland Resource Workshop, entre otros documentos.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 12-05-2005 a las 01:16:03. Razón: (corrección del texto)
Responder Con Cita
  #15  
Antiguo 12-05-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Como bien intuye dec, el archivo .res es el archivo .rc ya compilado.

Para incluir un archivo rc a nuestro proyecto no es necesario compilarlo aparte o usar un editor de recursos. Basta que agreguemos el archivo .rc al proyecto (menú Project|Add to Project...) sin necesidad de agregar la línea

{$R ...}

Al compilar el proyecto, Delphi sabe que debe compilar el archivo rc y automáticamente añade el recurso al ejecutable.

Con lo que hay que tener cuidado es con los nombres que demos a los recursos ya que no pueden repetirse. Así, si parten del archivo extdlgs.rc tendrán que cambiar tanto el nombre de la plantilla como el del bitmap del preview.

// Saludos
Responder Con Cita
  #16  
Antiguo 06-07-2006
mamaza_k mamaza_k is offline
Miembro
 
Registrado: jun 2006
Posts: 13
Poder: 0
mamaza_k Va por buen camino
ayuda con raize components

Alguien sabe en donde puedo encontrar informacion a cerca de los componentes raize, ya tengo las paletas, pero no se como utilizarlos, de antemano muchas gracias por su atencion.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 08:12:08.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi