Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   DBEdit con formato (https://www.clubdelphi.com/foros/showthread.php?t=36390)

Caracolg 10-10-2006 19:35:57

DBEdit con formato
 
:confused: Hola, necesio dar formato de miles a un DBEdit, pero no encuentro como hacerlo. ¿Alguien puede ayudarme? De antemano muchas gracias :)

Caral 10-10-2006 19:43:57

Hola
Por que no usar un MaskEdit que te da ese formato y otros ?
Saludos

Caracolg 10-10-2006 19:57:18

Muchas Gracias Caral
 
Lo que pasa es que el MaskEdit hasta donde se es una propiedad del Edit ¿No? Y yo necesito usar un DBEdit, pero no le encuentro esa propiedad, nisiquiera una parecida, no es a la hora de capturar, si no de desplegar la información de la tabla. Y en la tabla no viene la información con formato. ¿Como ves? :)

roman 10-10-2006 20:01:10

Porque el MaskEdit no es un control db aware. Sin embargo, los campos numéricos tiene la propiedad DisplayFormat para esos efectos, por ejemplo

Código Delphi [-]
Table1Salary.DisplayFormat := ',#.##';

// Saludos

Caral 10-10-2006 20:05:22

Hola
Recuerda que cualquier componente de texto adquirira el dato de una tabla por codigo, asi el edit puede contener los datos del dbedit, Prueba:
DBEdit1.Visible:= False;
MaskEdit1.Text:= DBEdit1.Text;
El MaskEdit1 tomara el valor del DBEdit1 y la informacion se dispondra en el maskedit, y esconderas el dbedit1, asi de simple.
Saludos

Caracolg 10-10-2006 20:08:59

Muchisimas gracias
 
:) Muchas gracias, osea que el formato se lo doy desde mi componente Table? y lo despliego con un DBEdit verdad? Te lo agradezco mucho....:)

roman 10-10-2006 20:10:17

Bueno, y si vamos a esconder el dbedit y copiar a mano los datos, ¿para qué queremos el dbedit? En tal caso los copiamos directo de la tabla:

Código Delphi [-]
MaskEdit1.Text := Table1.FieldByName('Salary').AsString;

Además, ya he mencionado el DisplayFormat.

// Saludos

Caracolg 10-10-2006 20:13:00

Gracias De Nuevo Caral
 
A ok, ya lo comprendí mejor. Me han ayudado a salir de un gran apuro, deja lo voy a probar. Lo que pasa es que he ido aprendiendo Delphi como Dios me da a entender, y aveces le batallo bastante. Muchisimas gracias!!! :)

Caracolg 10-10-2006 20:17:30

Gracias a ti también Roman
 
Creo que tienes razón, voy a pasarlo a mi sistema para ver como me funciona, y les aviso. De verdad agradezco tanta amabilidad de su parte. Gracias a ambos.

Caral 10-10-2006 20:24:15

Hola Roman
Ya ves es una cuestion de opinion, aqui en este caso a mi me gusta tener el dbedit tanto como el maskedit, en el form, ya que puedo entender mejor el codigo, aveces si se introduce mucho codigo directo a la tabla, a mi particularmente me confunde, con solo tocar el dbedit se de que datasource proviene, que tabla, que campo ect, de lo contrario tengo que ir al codigo y ver que hace el maskedit ect..
La verdad creo que en tal caso prefiero usar esto escrito antes por ti:
Cita:

Table1Salary.DisplayFormat := ',#.##';
Y si voy a tener que ver codigo que sea bueno como el tuyo, crees que el mio es asi:D :D Pues ojala lo fuera, pero no.:( Por eso tengo que ser lo mas simple y entendible que pueda.
Saludos

roman 10-10-2006 20:32:00

Sinceramente no entiendo por qué había de ser poco claro algo como:

Código Delphi [-]
EditEmpleadoSalario.Text := TablaEmpleados.FieldByName('Salario').AsString;

¿No proviene del campo Salario de la tabla de empleados?

Pero, más allá de eso, cada edit, maskedit, dbedit, etc. que uses gasta recursos del sistema. No veo necesidad de mantener uno tan sólo como transporte de datos. Los controles db aware están hechos para enlazarlos con la tabla y que de manera autmática se muestren y actualicen los datos. Si no se usan con esta finalidad, no creo que sirvan de algo, y menos aún para clarificar el código.

No obstante sería interesante que describieras con un poco más de detalle una situación en la que sientes que el código queda más claro.

// Saludos

Caracolg 10-10-2006 20:56:11

Perdon, ya lo trte de hacer, y no se donde poner el DisplayFormat, ya que en la tabla no me lo acepta, y en los DBedit tampoco :( me da mucha pena....¿pero donde lo agrego? :confused:

Mi sistema ya esta hecho, y tengo muchisimos DBedit como los que siguen:

Dbedit1.DataField:='D50';
Dbedit2.DataField:='D51';
Dbedit3.DataField:='D52';

¿El MaskEdit es un componente? Por que tampoco lo encuentro como propiedad de algo. Disculpen la lata....necesito un curso de Delphi :rolleyes:

Caral 10-10-2006 20:59:04

Huyy Roman
Es como esperar que Alexis7788 te de el atributo del combobox.:D
Para que te des una idea:
Recuerda que tal vez en alguna ocasion comente que contrate varios programadores que no funcionaron, entre ellos uno de delphi, el que me heredo el codigo con el que empece a trabajar.
Es Tan enrredada su sintaxis para llamar a las tablas, con sentencias provenientes del lado oscuro, que cuando decidi aprender esto, me dije a mi mismo, hey quien lo va a revisar si hay algun error, por supuesto el que viste y calza, y con que esperiencia, nula, entonces a hacer las cosas para tontos porque sino, no entiendo nada, Ya se que historia mas triste...:D pero es asi, cuando uno empieza y por supuesto no tiene ni idea de nada, hay que agarrarse de donde se puede. por eso digo cuestion de opinion.
Veo tu codigo constantemente, es mas soy un fiel admirador del mismo, veo simpleza, limpieza y efectividad, pero no te llego ni a los talones, necesito ir aprendiendo y perfeccionando mi codigo lo tengo claro, no crees que para aprender empiricamente es bueno tambien lo facil y comodo que ya habra tiempo de perfecionar lo que hicimos, te aseguro, as de haber modificado programas tuyos tantan veces como los ves, ya que el tiempo no pasa el valde.
Saludos Maestro

roman 10-10-2006 21:05:58

Cada DBEdit está asociado a un objeto TField que es quien maneja la información del campo correspondiente. Dependiendo del tipo de datos del campo, el objeto TField puede ser alguno de sus derivados: TStringField, TFloatField, TIntegerField, etc. pero el DBEdit sólo lo expone en su forma genérica TField. La propiedad DisplayFormat sólo está disponible a partir de TNumericField. Para poder asignar la propiedad debes entonces hacer un moldeo de datos:

Código Delphi [-]
TNumericField(DBEdit1.Field).DisplayFormat := ',#.##';

Otra forma de hacer esto, es agregar los campos durante el diseño usando el editor de campos del Table asociado (menú contextual del componente). De esta manera, en el formulario se incluyen los objetos TFiled (derivados) correctos, con nombres como TablaEmpleadosSalario. Haciéndolo así, puedes ver y asignar la propiedad DisplayFormat en el inspector de objetos.

// Saludos

Caral 10-10-2006 21:24:03

Perdona Roman
Despues de ponerme los lentes me costo entenderte, crees que una persona que empieza te entiende?:rolleyes: . Hay que tener por lo menos conceptos vasicos, mira la pregunta:
Cita:

no se donde poner el DisplayFormat
Definitivamente la clase es magistral, pero avanzada, creo a mi forma de ver que esto:
Código Delphi [-]
TNumericField(DBEdit1.Field).DisplayFormat := ',#.##';
Se puede poner en el evento onEnter del DBEdit, asi cuando este se muestre tendra el formato adecuado, estoy equivocado ?
Saludos.

roman 10-10-2006 21:47:07

Cita:

Empezado por Caral
Se puede poner en el evento onEnter del DBEdit

Esto es cuándo y no dónde :D Y aunque puedes ponerlo en ese evento, yo lo pondría, quizá, en el evento OnShow del formulario, o, mejor incluso, en el AfterOpen de la tabla.

Ahora bien, de hecho, insisto, yo no asociaría dicha propiedad através del DBEdit, sino directamente con el objeto Field correspondiente, bien sea usando Tabel.FieldByName o el objeto construido como dije anteriormente con el editor de campos.

// Saludos

maeyanes 10-10-2006 21:47:37

Para que ponerle el formato cada vez que entre al control?

Con que se ponga en el evento Create de la forma donde está el control es más que suficiente... ;)



Saludos...

Caral 10-10-2006 22:04:43

Es un poco de lo mismo. Comodidad
Y esto no es lo mismo para cada quien, coincido que el evento oncreate o OnShow del from es comodo si tienes un par de dbedit y es un programa pequeño, recordad que pienso como autodiacta y principiante, comodidad es la clave, si necesito saber que hace el dbedit, porque irme al evento del from, de ser asi no necesitaria ese evento el dbedit, para que si lo programo en el from ?., todo se puede programar, pero porque no usar los recursos de los componentes si estan.
No se digo yo ademas me encanta debatir con los maestros, asi aprendo.
Saludos

roman 10-10-2006 22:13:33

Cita:

Empezado por Caral
si necesito saber que hace el dbedit

Este es el meollo del asunto. No es lo que hace el DBEdit, sino el objeto Field asociado. Al modificar la propiedad DisplayFormat, no sólo afectas a ese DBEdit, sino a todo control que muestre los datos de ese campo. Si otro DBEdit o un DBGrid por ejemplo, están enlazados al mismo campo (o se enlazan en un futuro), será mucho más difícil entender por qué está mostrando los datos en tal o cual formato.

// Saludos

Caral 10-10-2006 22:23:47

Casualmente meollo del asunto, acabo de aprender que afecta a todos los componentes ya que atacas directamente al objeto Field asociado, perfecto en el caso de que te interese hacer eso pero si es uno o dos dbedit y no el dbgrid ect. no funcionaria, estas de acuerdo.?, para este efecto tendrias que ponerlo en el evento del componente que se vea afectado.
Muy interesante y funcional tu explicacion, la estoy grabando para el futuro, no si siempre lo digo, aqui quien mas aprende soy yo y eso que no pregunto.
Saludos


La franja horaria es GMT +2. Ahora son las 23:35:42.

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