| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
jacko Master


Registrado: 03 Sep 2005Mensajes: 287Ubicación: Colombia
|
Publicado: Lun 20 Nov, 2006 1:36 am Asunto: Se puede justificar a la derecha el texto de un TEdit? |
|
|
Simplemente esa es la pregunta. Como se podria justificar a la derecha el texto de un TEdit? He buscado en el foro y no he encontrado alguna pista.
Gracias por cualquier ayuda. _________________ Dios es real... a menos que se declare entero! |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 20 Nov, 2006 11:01 am Asunto: |
|
|
Cuando hablas de justificar, ¿te refieres a que se vaya escribiendo a la derecha del campo cómo se haría con los números?
En un TEDit directamente no se puede. Podrías hacerlo a través del evento OnKeyDown, por ejemplo:
| Código: | Edit1->Text = AnsiString::StringOfChar(' ', Edit1->MaxLength - Edit1->Length()) + Edit1->Text;
Edit1->SelStart = Edit1->Length(); |
No lo he probado, pero se me ocurre que algo así podría funcionarte. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
juanma Cmdr

Registrado: 17 Nov 2005Mensajes: 127Ubicación: Almeria - España
|
Publicado: Lun 20 Nov, 2006 4:40 pm Asunto: |
|
|
| Hasta lo que yo se, debes de usar un TMemo (de una línea y que no admita return) , aunque parezca mentira el TEdit no tiene esa propiedad. |
|
| Volver arriba |
|
 |
Angel Master


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


Registrado: 03 Sep 2005Mensajes: 287Ubicación: Colombia
|
Publicado: Lun 20 Nov, 2006 6:15 pm Asunto: |
|
|
Listo.
Muchas gracias por su ayuda Angel y Juanma. Voy a probar lo que me dicen.
Gracias! _________________ Dios es real... a menos que se declare entero! |
|
| Volver arriba |
|
 |
LIGERO Cmdr


Registrado: 13 May 2004Mensajes: 134Ubicación: Granada
|
Publicado: Vie 24 Nov, 2006 1:15 pm Asunto: |
|
|
En un TEdit es relativamente fácil como habeis dicho, pero que ocurre en un TStringGrid, con los valores numéricos.
¿Como podemos alinear a la izquierda toda una columna? _________________ La pintura es la expresión de la mente. |
|
| Volver arriba |
|
 |
Angel Master


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


Registrado: 13 May 2004Mensajes: 134Ubicación: Granada
|
Publicado: Lun 27 Nov, 2006 8:47 am Asunto: |
|
|
Siempre agoto las posibilidades antes de hacer una consulta.
Aunque a lo mejor es que no he buscado de forma correcta.
De todos modos gracias _________________ La pintura es la expresión de la mente. |
|
| Volver arriba |
|
 |
LIGERO Cmdr


Registrado: 13 May 2004Mensajes: 134Ubicación: Granada
|
Publicado: Lun 27 Nov, 2006 9:02 am Asunto: |
|
|
Angel, si te fijas yo pregunto por un StringGrid no por un DBGrid.
StringGrid no tiene el evento OnDrawColumnCell.
Un saludo _________________ La pintura es la expresión de la mente. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 27 Nov, 2006 11:20 am Asunto: |
|
|
No, pero tienes el OnDrawCell y ahí sí puedes aplicar los efectos. Te pongo aquí código que uso yo, que lo hice modificando otro que encontré por aquí.
1. Tengo un TStringGrid con 8 columnas y 13 filas, siendo fijas una de cada. Como quiero que el fondo del StringGrid esté en blanco cuando se "escribe" en él pero los items fijos no, pongo el color de todo el elemento en uno que no sea blanco (por ejemplo cl3DLight) tanto la propiedad Color como FixedColor.
2. En el evento OnDrawCell:
| Código: | void __fastcall TfTpv::EstadisDrawCell(TObject *Sender, int nCol,
int nRow, TRect &Rect, TGridDrawState State)
{
// Variables de trabajo.
TStringGrid *Grid = dynamic_cast<TStringGrid*>(Sender);
TCanvas *Canvas = dynamic_cast<TStringGrid*>(Sender)->Canvas;
TRect r(Rect);
Canvas->Brush->Color = Grid->Color;
Canvas->Font = Grid->Font;
Canvas->FillRect(r);
// Cambio color si no es la primera fila o columna
if (nRow != 0 && nCol != 0)
Canvas->Brush->Color = clWhite;
// Fuente en negrita si es la primera fila o columna
if (nRow == 0 || nCol == 0)
{
Canvas->Font->Style = TFontStyles()<<fsBold;
DrawText(Canvas->Handle, Grid->Cells[nCol][nRow].c_str(), Grid->Cells[nCol][nRow].Length(), &r, DT_VCENTER);
}
// Escribimos el texto a la derecha de la celda si no es la primera columna
if (nCol != 0)
Canvas->TextRect(Rect, (Rect.Left + (Rect.Width() - Canvas->TextWidth(Grid->Cells[nCol][nRow]))-5), (Rect.Top + 1), Grid->Cells[nCol][nRow]);
} |
Es evidente que en este caso todas las celdas excepto las fijas son números y van justificados a al derecha. El resultado, con este código, es este:
 _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
|