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 31-05-2020
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
determinar ancho de formulario en funcion a espacio de caracteres

buenas tardes

estoy tratando de generar un formulario multi proposito, es decir que por intermedio de parametros pueda mostrar informacion de cualquier tabla, los campos a mostrar los definiria en los parametros

ya tengo en la cabeza la forma de hacerlo (ya lo hice en foxpro) el tema es que aun no sé como determinar el ancho del form (dentro habrá una grilla) en funcion a la cantidad de campos que muestre

no se si me dejo entender
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #2  
Antiguo 01-06-2020
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.473
Poder: 21
newtron Va camino a la fama
Una forma sería usar un tipo letra no proporcional y hacer el cálculo en función de la longitud de los campos+separaciones. Si usas un tipo de letra proporcional la verdad es que no se me ocurre cómo podrías hacer eso.


Saludos

Edito: Estoy pensando en que si usas un tipo de letra no proporcional puedes intentar averiguar el ancho de cada campo en función de su número de caracteres y cuanto mediría rellenándolo con la letra más ancha que encuentres, siempre te sobraría espacio pero sería una forma.
__________________
Be water my friend.
Responder Con Cita
  #3  
Antiguo 02-06-2020
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Tienes a tu disposición TCanvas.TextWidth(const Text: string) : integer;
Devuelve el largo en pixels de un texto en el tipo de letra del Canvas.

Podrías recorrer los campos y obtener el ancho de cada uno según la cantidad de caracteres que permita contener.
Código Delphi [-]
S := StringOfChar('A', LongitudCampo);
AnchoEnPixels := Form1.Canvas.TextWidth(s);

Supongo que para un largo aproximado podrías hacer algo como lo siguiente:

Código Delphi [-]
procedure TForm1.FormShow(Sender: TObject);
var
   Bordes : integer;
   Campos : integer;
   AnchoCampo : integer;
begin
  // Cuanto espacio quiero dejar para bordes
  Bordes := 10;

  // Cuantos campos hay en el grid
  Campos  := 5;

  // Ancho de un campo 
  AnchoCampo := Form1.Canvas.TextWidth('El ancho de este string');

  // Establezco ancho de formulario
  Form1.Width := (Bordes * 2) + (AnchoCampo * Campos);
end;
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
DBGrid que adapte sus columnas en función del ancho del contenedor Kenobi Lazarus, FreePascal, Kylix, etc. 12 15-04-2015 21:34:28
Caracteres de 16 bits en vez de 8 bit, funcion send cesarsoftware Internet 1 04-02-2012 18:40:51
Función que elimine caracteres blancos!!! Sole_l Varios 2 01-04-2009 09:16:46
¿Función para determinar la capacidad del disco duro? Roilo API de Windows 8 30-12-2008 19:07:30
Colocar Ancho De columna de un DBGrid dependiendo del ancho del maximo campo guardado gulder Varios 3 08-11-2008 12:27:34


La franja horaria es GMT +2. Ahora son las 15:59:51.


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