Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

cambiar fuente de TEdit en modo ReadOnly

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: cambiar fuente de TEdit en modo ReadOnly Responder citando

uyyy. no había pensado en eso.
El Edit al que quiero aplicarle la fuente es de un Tedit derivado para solo aceptar números, con o sin decimales. Creo que lo tendré fácil

Gracias por la idea y saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Entonces lo más fácil es reescribir la función virtual WndProc.
Código:

void __fastcall TNuevoEdit::WndProc(Messages::TMessage &Message)
{
   if (Message.Msg == WM_PAINT)  {
       // El código
   }

   // LLamada a la clase madre.....
   TEdit::WndProc(Message);
} 


Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Me has dejado planchao
Yo tengo el Edit en un .pas, con las funciones correspondientes, que compilo y añado a mi builder 2007. Pero no tengo idea de donde colocar lo que me has dicho. ¿O es para cuando es un cpp?

Gracias por tu ayuda y por tu tiempo

Saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Ese método está igual en delphi. De hecho el fuente es delphi. El código que pongo es pensando que tu nuevo edit estaba escrito en CPP.

Código:

TNewEdit = class(TEdit)
  private
    { Private declarations }
  protected
    procedure WndProc(var Message: TMessage); override;
  public
    { Public declarations }
  end;



Código:

procedure TNewEdit.WndProc(var Message: TMessage);
begin
  If Message.Msg =WM_PAINT
  begin
  // código
  end;
  inherited WndProc(Message);
end;


Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Voy a empezar por esto último.

Muchas gracias por tu incansable e incalculable ayuda

Saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Un ejemplo Básico del TNewEdit:

Código:

unit NewEdit;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, StdCtrls;

type
  TNewEdit = class(TEdit)
  private
    DColor: COLORREF;
  protected
    procedure WndProc(var Message: TMessage); override;
  public
    procedure SetDisableColor(Color: COLORREF);
  published
    { Published declarations }
  end;

procedure Register;
                                           
implementation

procedure TNewEdit.WndProc(var Message: TMessage);
var
  ps: PAINTSTRUCT;
  DC: HDC;
begin
  if (Message.Msg = WM_PAINT) and (not IsWindowEnabled(Handle)) then
  begin
    DC:= BeginPaint(Handle, ps);
    SetTextColor(DC, DColor);
    SelectObject(DC, SendMessage(Handle, WM_GETFONT, 0, 0));
    TextOutA(DC, 1,1, PChar(Text), Length(Text)+1);
    EndPaint(Handle, ps);
  end;
  inherited WndProc(Message);
end;

procedure TNewEdit.SetDisableColor(Color: COLORREF);
begin
  DColor:= Color;
  Invalidate;
end;

procedure Register;
begin
  RegisterComponents('Samples', [TNewEdit]);
end;

end.


Un ejemplo de funcionamiento en una aplicación delphi
Código:

procedure TForm1.FormCreate(Sender: TObject);
begin
  NewEdit1.SetDisableColor(clRed);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  NewEdit1.Enabled:= true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  NewEdit1.Enabled:= false;
end;


Y en una Aplicación Cpp
Código:

__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
  NewEdit1->SetDisableColor(clRed);
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  NewEdit1->Enabled = true;
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
  NewEdit1->Enabled = false;
}


Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

ufff, es que no me has dado tiempo ni empezar a estudiarlo y ya me pones la solución
Como ya dije, el edit que uso es derivado y lo máximo que he mirado es que la función WndProc ya estaba. He añadido una variable para asignarle el color en tiempo de diseño y ahí me he parado por falta de tiempo.
Implementaré/copiaré/añadiré tu función a la anterior y así mejorar el Edit.

Pero antes tendré que refrescar mi programación, que lleva casi 2 años en modo tortuga.

Repito: MUCHAS GRACIAS y saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.