PDA

Ver la Versión Completa : Movimiento de texto dentro de un TEdit


Cristhor1982
17-05-2013, 16:51:47
Amigos

Me gustara simular el movimiento de un texto dentro de un TEdit, es para dar informacion y se destaque con el movimiento

algo asi


que se deberia mover.. Este es el texto…


Estoy probando con un timer y el tedit y obviamente sus propiedades...una ayuda please

Saludos

dec
17-05-2013, 16:59:59
Hola,

No diré que sea perfecto, pero, igual puede darte alguna idea:


unit Project.SampleForm;

interface

uses
Vcl.Forms, Vcl.ExtCtrls, System.Classes,
Vcl.Controls, Vcl.StdCtrls;

type
TSampleForm = class(TForm)
TypeEdit: TEdit;
TypeEditTimer: TTimer;
procedure FormCreate(Sender: TObject);
procedure TypeEditTimerTimer(Sender: TObject);
private
FCurrentCharNum : integer;
FSavedTypeEditText : string;
end;

var
SampleForm: TSampleForm;

implementation

{$R *.dfm}

procedure TSampleForm.FormCreate(Sender: TObject);
begin
FCurrentCharNum := 0;
TypeEditTimer.Interval := 50;
TypeEditTimer.Enabled := true;
FSavedTypeEditText := TypeEdit.Text;
end;

procedure TSampleForm.TypeEditTimerTimer(Sender: TObject);
begin
if TypeEdit.Text = FSavedTypeEditText then
FCurrentCharNum := 0
else
Inc( FCurrentCharNum );

TypeEdit.Text := Copy( FSavedTypeEditText, 1, FCurrentCharNum );
TypeEdit.SelStart := Length( TypeEdit.Text );
end;

end.

Cristhor1982
17-05-2013, 17:36:42
No puedo hacer que funcione tu codigo...:(

Cristhor1982
17-05-2013, 19:10:43
Te cuento, lo que quiero hacer es....Mostrar la fecha en movimiento hasta ahora se me ocurrió algo muy basico

procedure TForm1.FormShow(Sender: TObject);
var
datetime:Tdatetime;
begin
Edit2.Text := DateTimeToStr(now);
Edit2.left := 140;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Edit2.Left:=Edit2.Left -1;
If Edit2.Left = 8 then
Edit2.Left := 140;
end;


Tengo dos edit, uno es solo pantalla y el otro no tiene bordes y esta en autosize, y juego con su Left, es lo que se me ocurrio, Funciona pero no creo que sea la solucion que corresponde...Saludos

dec
17-05-2013, 19:21:19
Hola,

Siento no poder ayudarte. Lo cierto es que sólo se me ocurre usar algún "Timer" y los correspondientes cálculos y eso, pero, uno puede imaginar que hay formas más curiosas y elegantes de "animar controles" o lograr "efectos" del tipo que te interesa. Lo que el código que he mostrado logra es, poco más o menos, lo que puede verse en la siguiente imagen:

http://img69.imageshack.us/img69/2635/typedit.gif

De todas formas, te adjunto el ejemplo "completo" para que puedas echarle un vistazo.

Cristhor1982
17-05-2013, 19:37:54
Muchas Gracias por tu ayuda, voy a tratar de hacer algo mas "Animado"....si lo logro lo pondre aca saludos. Nuevamente muchas gracias
Hola,

Siento no poder ayudarte. Lo cierto es que sólo se me ocurre usar algún "Timer" y los correspondientes cálculos y eso, pero, uno puede imaginar que hay formas más curiosas y elegantes de "animar controles" o lograr "efectos" del tipo que te interesa. Lo que el código que he mostrado logra es, poco más o menos, lo que puede verse en la siguiente imagen:

http://img69.imageshack.us/img69/2635/typedit.gif

De todas formas, te adjunto el ejemplo "completo" para que puedas echarle un vistazo.

ecfisa
17-05-2013, 21:42:47
Hola Cristhor1982.

No sé si se aproxíma a lo que buscas, pero esta podría ser otra opción:

...
implementation

var
Texto : string = ' Este es el texto que se deberia mover. ';

procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Interval := 1000 div 10;
Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Edit1.Text := Copy(Texto, Length(Texto), 1) + Copy(Texto, 1, Length(Texto) -1);
Texto := Edit1.Text
end;


Saludos :)

Cristhor1982
17-05-2013, 23:36:34
Gracias...por la orientación ....saludos

:)