Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con TTaskDialog (https://www.clubdelphi.com/foros/showthread.php?t=91485)

Reasen 16-02-2017 05:14:10

Problema con TTaskDialog
 
Buenas! Estaba finalizando una aplicación y a la hora de usarlo en otro ordenador se me muestra incorrectamente el TTaskDialog Aquí dejo una captura de como se ve


Este es el sistema con el problema: Windows 10 Home x64 Build 14393

He probado con otro Windows 10 y no ocurre ese problema.


Alguna manera de redimensionar manualmente un TTaskdialog?
Alguna otra librería similar para TTaskDialog?

Cualquier consejo es bienvenido, saludos.

AgustinOrtu 16-02-2017 06:19:00

Que version de Delphi? Estas usando Vcl Styles?

Edito:

En este hilo se trato el tema

Taskdialog no se ve completo

Confirmado, el problema solo se reproduce si usas algun Vcl Style

Codigo:

Código Delphi [-]
uses
  Vcl.Themes;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TaskDialog1.CommonButtons := [];
  TaskDialog1.Buttons.Clear;
  TaskDialog1.MainIcon := tdiInformation;
  TaskDialog1.Title := 'Test TaskDialog';
  TaskDialog1.Text := 'Test TaskDialog.';
  TaskDialog1.ModalResult := mrCancel;
  TaskDialog1.Buttons.Add();
  TaskDialog1.Buttons.Add();
  TaskDialog1.Buttons[0].Caption := 'Salir';
  TaskDialog1.Buttons[0].ModalResult := mrOk;
  TaskDialog1.Buttons[0].Default := True;
  TaskDialog1.Buttons[1].Caption := 'Cancelar';
  TaskDialog1.Buttons[1].ModalResult := mrCancel;
  TaskDialog1.Execute;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if CheckBox1.Checked then
    TStyleManager.SetStyle('Sterling') // o cualquier vcl style
  else
    TStyleManager.SetStyle('Windows');
end;

Reasen 16-02-2017 06:28:18

Cita:

Empezado por AgustinOrtu (Mensaje 513333)
Que version de Delphi? Estas usando Vcl Styles?

XE 10.1
Sí, una aplicación normal de VCL para Windows.

AgustinOrtu 16-02-2017 06:33:55

Habria que probar si usando los arreglos de Vcl Styles Utils se soluciona

https://theroadtodelphi.com/2014/10/...log-component/

https://github.com/RRUZ/vcl-styles-u...LStylesUxTheme

Synopse tiene su implementacion propia del task dialog:

http://blog.synopse.info/post/2011/0...XP,Vista,Seven

Reasen 16-02-2017 06:34:56

Mañana seguiré haciendo pruebas con el sistema que me da ese problema...
Ahora mismo no lo tengo a mano.

Estoy usando https://github.com/rruz/vcl-styles-utils
para mejorar visualmente la skin de la aplicación tambien.

No estaba usando los hooks de Vcl.styles.UxTheme
Quizás eso arregle el problema.

Edito: Vcl.Styles.Hooks me añade los hooks de Vcl.styles.UxTheme automáticamente por lo que los estaba usando.

Reasen 16-02-2017 07:06:32

Este problema está hablado aquí también:
https://www.clubdelphi.com/foros/showthread.php?t=90906

pero sin solución... Parece que tocará reemplazarlo por un form normal? :/

AgustinOrtu 16-02-2017 07:09:13

Lo que me extraña es que en el blog de Vcl Style Utils muestra imagenes del Task Dialog con los estilos aplicados

Segun esto el proyecto debe tener estas unidades:

Código Delphi [-]
program Aplicacion;

uses
  ...
  Vcl.Styles.Utils.Forms
  Vcl.Styles.Utils.SysStyleHook
  Vcl.Styles.Utils.SysControls
  Vcl.Styles.Hooks,
 ...
;

Reasen 16-02-2017 07:11:47

Cita:

Empezado por AgustinOrtu (Mensaje 513339)
Lo que me extraña es que en el blog de Vcl Style Utils muestra imagenes del Task Dialog con los estilos aplicados

El problema es que falla en ciertos Windows 10.

Tengo una máquina virtual con Windows 10 y no me da problema pero en otro Windows 10 sí.

AgustinOrtu 16-02-2017 07:17:21

No sera por lo de Windows 10 Anniversary? Yo tengo Windows Anniversary build 1607 (14393.693)

Reasen 16-02-2017 07:19:06

Cita:

Empezado por AgustinOrtu (Mensaje 513341)
No sera por lo de Windows 10 Anniversary? Yo tengo Windows Anniversary build 1607 (14393.693)

Build 14393

Sí, justo la misma build que me da el problema,
podrías entonces ver si en tu sistema te falla?

Me estoy descargando/instalando el Windows 10 de esa build en mi VMWare, intentaré encontrar una solución...

AgustinOrtu 16-02-2017 13:26:56

En el segundo mensaje comenté que pude reproducir (creo que edite el mensaje justo cuando respondiste)

Reasen 16-02-2017 15:25:30

Cita:

Empezado por Reasen (Mensaje 513342)
Build 14393

Sí, justo la misma build que me da el problema,
podrías entonces ver si en tu sistema te falla?

Me estoy descargando/instalando el Windows 10 de esa build en mi VMWare, intentaré encontrar una solución...

Intentando actualizar mi windows 10 virtual


Intentando instalarlo directamente desde un ISO x86 con esa build


El x64 se instala pero pantalla azul al iniciarse,

Microsoft pls....



En fin, lo que haré será mostrar un dialogo diferente pero con el mismo objetivo/destino cuando detecte que Windows está usando la Build 14393

AgustinOrtu 16-02-2017 18:02:05

Cita:

Parece que tocará reemplazarlo por un form normal? :/
A mi me parece lo mas logico. Nunca me gusto la idea de tener "funciones sueltas" para invocar cuadros de dialogo. Siempre prefiero esconder este tipo de cosas detras de alguna clase/interface pero va en gustos

De todos modos crear tu propio dialogo utilizando TForm es algo bastante sencillo, y como te lo haces a tu gusto no tenes que andar lidiando con cosas de mas o complicadas

Yo creo que hacer cuadros de dialogo "genericos" y/o "apto para todos" termina complicando mas las cosas

Reasen 16-02-2017 18:28:38

Cita:

Empezado por AgustinOrtu (Mensaje 513380)
A mi me parece lo mas logico. Nunca me gusto la idea de tener "funciones sueltas" para invocar cuadros de dialogo. Siempre prefiero esconder este tipo de cosas detras de alguna clase/interface pero va en gustos

De todos modos crear tu propio dialogo utilizando TForm es algo bastante sencillo, y como te lo haces a tu gusto no tenes que andar lidiando con cosas de mas o complicadas

Yo creo que hacer cuadros de dialogo "genericos" y/o "apto para todos" termina complicando mas las cosas


Mi objetivo es usar los botones especiales con iconos de flechas, barras de progreso y cuadro extensible, lo veo mucho más fácil adaptarlo desde puro código que creando forms.

La aplicación está diseñada para funcionar en sistemas modernos, compilando en x64.
No me hace falta darle compatibilidad a x86.


Ya tengo conocimiento de que el TTaskDialog nativo de Delphi hace que no funcione en Windows XP.

Se adapta a lo que necesito, sino preferiría dejarlo con forms.

Lo unico que me preocupa es esa build de Windows 10 que me causa el problema en TTaskdialog.

AgustinOrtu 16-02-2017 18:34:50

Sino la que te queda es sacarle el estilo visual antes de invocar al task dialog y luego volverlo a colocar

Reasen 16-02-2017 18:43:07

Cita:

Empezado por AgustinOrtu (Mensaje 513383)
Sino la que te queda es sacarle el estilo visual antes de invocar al task dialog y luego volverlo a colocar

O detectar que build de Windows usa y reemplazarlo por algo mas simple si se trata de la build con problemas, que por ahora es mi solución.

Reasen 16-02-2017 19:24:04

Cita:

Empezado por AgustinOrtu (Mensaje 513383)
Sino la que te queda es sacarle el estilo visual antes de invocar al task dialog y luego volverlo a colocar

Oh, creí que te referías a la Skin entera, ahora que lo pienso puedo unhookear solo la skin de TTaskdialog cuando se trate de esa build :D, eso debería bastar!

Reasen 21-02-2017 05:09:57

Hola, volví a echar un ojo y arreglé el problema de otra manera, usando estas librerías de RRUZ funcionó en esa Build específica (Se ve que faltaban algunas (?))

DDetours,
InstDecode,
Vcl.Styles.UxTheme,
Vcl.Styles.Utils.Forms,
// Vcl.Styles.Utils.Menus , //bug en popups de tlistview, no aplicar
Vcl.Styles.Utils.SysStyleHook,
Vcl.Styles.Utils.SysControls,
Vcl.Styles.Utils.Graphics,


La franja horaria es GMT +2. Ahora son las 00:00:10.

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