PDA

Ver la Versión Completa : Sobre registro de Windows


Angel.Matilla
29-11-2018, 09:54:02
Un usuario de una aplicación que he desarrollado la está corriendo en dos PC diferentes. En uno de ellos en las propiedades de la pantalla tiene definido el tamaño de pantalla al 140% y en muchos de los elementos, especialmente los TListView, se "recortan" los campos. Estaba pensando en ajustar dinámicamente los formularios de la aplicación pero no sé dónde se guardan estos parámetros de la pantalla en el registro de windows.

ecfisa
29-11-2018, 18:12:11
Hola.

Así de pronto, ¿ Has intentado poniendo la propiedad Scaled a false en los formularios de la aplicación?

Saludos :)

ecfisa
29-11-2018, 23:03:54
Hola de nuevo.

No te aconsejo cambiar la configuración de pantalla de las distintas PC, ya que invade las preferencias personales y normalmente molesta a los empleados. Pero si no te convence o no te resulta la sugerencia del mensaje anterior, podes cambiar los valores así:

#include <registry.hpp>

const int SCALE_100 = 96.0;

int getDPIscale(void)
{
TRegistry *reg = new TRegistry;
int scale = 0;
__try {
reg->RootKey = HKEY_CURRENT_USER;
if(reg->OpenKey("\\Control Panel\\Desktop", false))
scale = reg->ReadInteger("LogPixels");
}
__finally {
delete reg;
}
return scale;
}

void setDPIscale(const int &scale)
{
TRegistry *reg = new TRegistry;

__try {
reg->RootKey = HKEY_CURRENT_USER;
if(reg->OpenKey("\\Control Panel\\Desktop", false))
reg->WriteInteger("LogPixels", scale);
}
__finally {
delete reg;
}
}


Ejemplo de uso:

void __fastcall TForm1::btnGetClick(TObject *Sender)
{
ShowMessage(getDPIscale());
}

void __fastcall TForm1::btSetClick(TObject *Sender)
{
int value;
if (TryStrToInt(Edit1->Text, value))
setDPIscale(value);
}


Luego de cualquier cambio debes minimamente cerrar y volver a abrir sesión o reiniciar el equipo para que tome la nueva configuración.

Saludos :)