 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Schweiko Lt JG

Registrado: 05 Jun 2008Mensajes: 65Ubicación: Argentina - Misiones
|
Publicado: Mar 16 Mar, 2010 3:22 am Asunto: Guardar en un INI la fuente con la que se trabaja. |
|
|
Hola gente, estoy en los detalles finales de un programa. y me surge el siguiente problema, en la parte de configuracion he puesto un TFontDialog, con el cual se elige la fuente y tamaño de los textos de la aplicacion..
el unico inconveniente que tengo es que no se guradar en el archivo INI que tengo el tipo de fuente y tamaño de las letras. para q al iniciar la aplicacion se configure todo... tambien debo leerlo...
si alguien me ayuda estaria muy agradecido |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Mie 17 Mar, 2010 1:12 pm Asunto: |
|
|
Investiga el control TIniFile (no visual).
Saludos. |
|
| Volver arriba |
|
 |
Schweiko Lt JG

Registrado: 05 Jun 2008Mensajes: 65Ubicación: Argentina - Misiones
|
Publicado: Mie 17 Mar, 2010 8:07 pm Asunto: |
|
|
Yo obtengo del TFontDialog la fuente y la guardo en una varialble TFont *Fuente.
Lo que no logro es guardar este valor en el ArchivoINI y mucho menos recuperarlo del archivo...
porque usando la clase TIniFile grabo todas las configuraciones, porque siempre son int,string o variables comunes... pero No se como guardar el TFont que obtengo del dialogo... no se si ahora me entienden...
En el archivo ini se leer y guardar integer, string, float, etc... pero no se como guardar y leer una variable TFont en dicho archivo..
Ahora creo que me entenderan jeje.. un abrazo |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 17 Mar, 2010 11:11 pm Asunto: |
|
|
Puedes guardar/leer cada propiedad de la fuente por separado:
| Código: | ini->WriteString("Seccion", "Font1Name", FontDialog1->Font->Name);
ini->WriteInteger("Seccion", "Font1Size", FontDialog1->Font->Size);
//...etc... |
O bien puedes crear una cadena con las distintas propiedades para grabarlo/leerlo en una sola línea. Aquí tienes un par de funciones de ejemplo de como hacerlo:
| Código: | // Añadimos las cabeceras: #include<memory> e #include<IniFiles.hpp>
//---------------------------------------------------------
void __fastcall IniWriteFont(TIniFile* ini,
const String Section, const String Ident, TFont* font)
{
std::auto_ptr<TStringList> sl(new TStringList);
String style = font->Style.Contains(fsBold) ? "b" : "";
style += font->Style.Contains(fsItalic) ? "i" : "";
style += font->Style.Contains(fsUnderline) ? "u" : "";
style += font->Style.Contains(fsStrikeOut) ? "s" : "";
sl->Append(font->Name);
sl->Append(style);
sl->Append(font->Size);
sl->Append(ColorToString(font->Color));
ini->WriteString(Section, Ident, sl->CommaText);
}
//---------------------------------------------------------
void __fastcall IniReadFont(TIniFile* ini,
const String Section, const String Ident, TFont* font)
{
std::auto_ptr<TStringList> sl(new TStringList);
String CommaText = ini->ReadString(Section, Ident, "");
sl->CommaText = CommaText;
if (sl->Count == 4)
{
TFontStyles style;
if (sl->Strings[1].Pos("b")) style << fsBold;
if (sl->Strings[1].Pos("i")) style << fsItalic;
if (sl->Strings[1].Pos("u")) style << fsUnderline;
if (sl->Strings[1].Pos("s")) style << fsStrikeOut;
font->Name = sl->Strings[0];
font->Style = style;
font->Size = sl->Strings[2].ToIntDef(font->Size);
font->Color = StringToColor(sl->Strings[3]);
}
} |
Y un ejemplo de uso:
| Código: | std::auto_ptr<TFontDialog> dlg(new TFontDialog(0));
std::auto_ptr<TIniFile> ini(new TIniFile("prueba.ini"));
IniReadFont(ini.get(), "SeccionDePrueba", "FuenteDePrueba", dlg->Font);
if (dlg->Execute())
{
IniWriteFont(ini.get(), "SeccionDePrueba", "FuenteDePrueba", dlg->Font);
//...
ini->WriteString("SeccionDePrueba", "Etc", "Prueba");
//...
} |
Esto guarda en el .ini algo así:
| Código: | [SeccionDePrueba]
FuenteDePrueba="Times New Roman",bu,10,clWindowText
Etc=Prueba |
|
|
| Volver arriba |
|
 |
Schweiko Lt JG

Registrado: 05 Jun 2008Mensajes: 65Ubicación: Argentina - Misiones
|
Publicado: Jue 18 Mar, 2010 5:14 am Asunto: |
|
|
Gracias Leo... justo lo que necesitaba... no me habia dado cuenta de que TFont constaba de partes jeje..
muy agradecido... un abrazo |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|