Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   personalizar un opendialog (https://www.clubdelphi.com/foros/showthread.php?t=21047)

ebeltete 04-05-2005 19:59:27

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.

dec 05-05-2005 06:18:43

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í.

roman 05-05-2005 16:09:14

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

ebeltete 05-05-2005 17:09:41

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

dec 06-05-2005 09:06:54

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...

ebeltete 06-05-2005 14:28:56

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

Delfino 07-05-2005 21:51:41

Un ejemplo de extender un opendialog standar esta en el programa mirc (DCC send)..

ebeltete 08-05-2005 19:32:39

Donde esta "programa mirc (DCC send)..", esta en los demos de Delphi?, yo tengo Delphi 5

Delfino 09-05-2005 19:23:55

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..

ebeltete 11-05-2005 02:30:53

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

roman 11-05-2005 06:15:08

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

ebeltete 11-05-2005 14:37:29

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

ebeltete 11-05-2005 15:37:39

El archivo .res se crea a partir del .rc ?
Si es así como lo hago

dec 12-05-2005 01:03:00

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.

roman 12-05-2005 01:51:31

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

mamaza_k 06-07-2006 23:58:53

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.


La franja horaria es GMT +2. Ahora son las 16:58:01.

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