Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-08-2010
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
que en lblmarquee se pueda copiar un renglon

Hola estoy intentando que en lblmarquee se pueda copiar cada renglon que va pasando en tiempo real pero estoy muy lejos de poder hacerlo ! ademas no se si es posible hacerlo ?!.

saludos.
Responder Con Cita
  #2  
Antiguo 28-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Gaston.

Por favor explica un poco más de que modo y donde querés que se copie.

Saludos.
Responder Con Cita
  #3  
Antiguo 28-08-2010
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
Hola ecfisa , tengo este codigo y estoy usando un memo en vez de un Label


unit Unit1;
interface
uses

Windows, SysUtils, Forms, ExtCtrls, Classes;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
FCaption: string;
public
end;

var Form1: TForm1;

implementation

{$R *.dfm}

procedure
TForm1.FormCreate(Sender: TObject);
begin Caption:= 'prueba1234';
FCaption:= Caption;
Timer1.Interval := 1000 div 5;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var txt: string;begin txt:= Self.Caption;
Caption:= Copy(txt, length(txt), 1) + Copy(txt, 1, length(txt) -1);
// ó, Caption:= Copy(txt, 2, length(txt)-1) + Copy(txt,1,1);
// si FCaption = Caption , implica que el último o primer caracter llegaron a su lugar

if FCaption = Caption
then

Windows.MessageBeep(MB_ICONEXCLAMATION);end;end.

pero lo que necesito es poder copiar renglon por renglon para que un programa externo lo pueda leer pero tiene que ser solo renglon por renglon ; Amigo estoy usando el mismo codigo de acá http://www.clubdelphi.com/foros/showthread.php?t=69548

y el codigo completo que encontre es este http://delphi.about.com/library/weekly/aa071100a.htm

saludos !

Última edición por gaston260 fecha: 28-08-2010 a las 13:52:05.
Responder Con Cita
  #4  
Antiguo 28-08-2010
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
y contestando donde quiero que se copie eso no interesa por que el programa que es llamado lee el texto al ser copiado y eso es lo que quiero como fin a este programa !
Responder Con Cita
  #5  
Antiguo 28-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Gaston.

Vas a necesitar una aplicación que envie el string y otra que lo reciba. Una solución es usar el record TCopyDataStruct (unit Windows) para pasar el dato usando el mensaje WM_COPYDATA.

En el ejecutable receptor puse un TPanel que recibe el valor en su propiedad Caption.
(Tál como en el post anterior, reduje código para simplificar)

Ejecutable Emisor:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, SysUtils, Forms, ExtCtrls, Classes, Messages;

type
  TFrmSender = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    procedure SendString(StrToSend: string);
  public
  end;
var
  FrmSender: TFrmSender;

implementation {$R *.dfm}

procedure TFrmSender.SendString(StrToSend: string);
var
  CopyDStruct: TCopyDataStruct;
  ReceptHnd : THandle;
begin
  with CopyDStruct do
  begin
    dwData := 0;
    cbData := 1 + Length(StrToSend);
    lpData := PChar(StrToSend);
  end;
  {¡OJO ACA! En la línea siguiente, las cadenas enviadas a FindWindow,  
   deben ser iguales al nombre del Form Receptor }
  ReceptHnd := FindWindow(PChar('TFrmRecept'),PChar('FrmRecept')) ;
  if ReceptHnd <> 0 then
    SendMessage(ReceptHnd,WM_COPYDATA,Integer(Handle),Integer(@CopyDStruct));
end;

procedure TFrmSender.FormCreate(Sender: TObject);
begin
  Caption:= 'PRUEBA DE DESPLAZAMIENTO DE TEXTO ';
  Timer1.Interval := 1000 div 5;
end;

procedure TFrmSender.Timer1Timer(Sender: TObject);
var
  txt: string;
begin
  txt:= Self.Caption;
  Caption:= Copy(txt, length(txt), 1) + Copy(txt, 1, length(txt) -1);
  SendString(Caption);
end;
end.

Ejecutable Receptor:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TFrmRecept = class(TForm)
    Panel1: TPanel;
    procedure FormCreate(Sender: TObject);
  private
   procedure WMCopyData(var Msg : TWMCopyData) ; message WM_COPYDATA;
  public
    { Public declarations }
  end;

var
  FrmRecept: TFrmRecept;

implementation {$R *.dfm}

procedure TFrmRecept.WMCopyData(var Msg: TWMCopyData);
begin
  Panel1.Caption:= Pchar(Msg.CopyDataStruct.lpData)
end;

procedure TFrmRecept.FormCreate(Sender: TObject);
begin
  Panel1.Caption:= '';
end;
end.

Luego ejecuta Project1.exe y Project2.exe para ver el resultado.

Por favor utilizá las etiquetas [code] o [delphi], gracias.


Saludos.

Última edición por ecfisa fecha: 28-08-2010 a las 19:23:49.
Responder Con Cita
  #6  
Antiguo 31-08-2010
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
Esta muy interesante como está desarrollado el programa pero lo que estoy buscando es poder copiar con el lblmarquee , mira te voy a explicar mejor lo que tengo y que busco , tengo un lblmarquee y un memo , con el memo le paso todo lo que hay escrito al lblmarquee , este hace desplazar las letras , supongamos que tengo esto en un memo

1 macá tengo un texto <-- 1º renglon o linea

2 acá tengo otro texto <-- 2º renglon o linea

3 y este texto por ultimo <-- 3º renglon o linea

esto que esta en el memo se va a pasar al lblmarquee y lo que estoy necesitando es poder hacer ctrl+c (como en el teclado) por cada linea que esta escrita en el memo y de ahi con soldelsCot supongamos poder hacer que valla diciendo lo que se va copiando ! disculpa si no me ago entender bien pero es mi gran defecto !

saludos !
Responder Con Cita
  #7  
Antiguo 31-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Gastón.

No hay problema, como dijiste 'programa externo' pensé en dos ejecutables.

Mirá yo haría así :
Agregaría una variable privada más (FLinea) que me sirva para indizar la línea actual del memo y
aprovecharía la evaluación de condición anterior para incrementar la misma.

Código Delphi [-]
unit Unit1;

interface

uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Label1: TLabel;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    FCaption: string;
    FLinea: Integer;
  public
  end;

var
  Form1: TForm1;

implementation{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Lines.LoadFromFile('C:\PRUEBA.TXT'); // cargar cualquier archivo .txt
  FLinea:= 0;
  FCaption:= Memo1.Lines[FLinea];
  Caption:= FCaption;
  Timer1.Interval := 1000 div 5;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  txt: string;
begin
  txt:= Caption;
  Caption:= Copy(txt, Length(txt), 1) + Copy(txt, 1, Length(txt) -1);
  if FCaption = Caption then
  begin
    Inc(FLinea);
    Caption:= Memo1.Lines[FLinea];
    FCaption:= Caption;
  end;
end;

En cuanto la decteccíon de Ctrl+C para copiar y otra convinación para pegar lo podés capturar en el evento OnKeyDown del Memo o el Form. ( lamento andar con poco tiempo ahora para implementartelo, pero si luego hago un rato intento..)

Espero haberte entendido.

Saludos.

Última edición por ecfisa fecha: 31-08-2010 a las 02:11:17.
Responder Con Cita
  #8  
Antiguo 31-08-2010
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
Smile

Genio !! lo voy a probar !!
Responder Con Cita
  #9  
Antiguo 31-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Interesante concepto amigo.
Pregunto: Para que sirve
Código Delphi [-]
var
  Form1: TForm1;
  FCaption: string;
  FLinea: Integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   Memo1.Lines.LoadFromFile('C:\Prueba.TXT'); // cargar cualquier archivo .txt
   FCaption:= Memo1.Lines[FLinea];
   Caption:= FCaption;
   Timer1.Interval := 1000;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Caption:= Copy(Caption, Length(Caption), 1) + Copy(Caption, 1, Length(Caption) -1);
  if FCaption = Caption then
  begin
  Inc(FLinea);
  Caption:= Memo1.Lines[FLinea];
  FCaption:= Caption;
  end;
end;
Por cierto me sobran variables.....
Saludos
__________________
Siempre Novato
Responder Con Cita
  #10  
Antiguo 31-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo Gaston.

Primero disculpas, mirá como escribí la palabra combinación !!! (convinacion)... debo tener calambre cerebral...

Ahora a lo que hablamos. Para copiar y pegar el texto podés poner KeyPreview := True , en FormCreate y el siguiente código en el evento OnKeyDown del Form.

Código Delphi [-]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if ssCtrl in Shift then
     case Chr(Key) of
       'C','c': // Copias el texto
       'V','v': // Pegas el texto
     end;
end;

Saludos.
Responder Con Cita
  #11  
Antiguo 31-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Caral Ver Mensaje
Hola
Interesante concepto amigo.
Pregunto: Para que sirve
[Por cierto me sobran variables.....
Saludos
A la primera pregunta te tengo que dar una respuesta cargada de matices filosóficos: No lo sé...

Y en cuanto a la observación: Tenés razón. Con el apuro trabajé sobre el código anterior, txt es innecesaria...

Un abrazo.
Responder Con Cita
  #12  
Antiguo 31-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Es interesante y curioso el efecto de lectura que hace y la representación en el caption.
Estos códigos son buenos para aprender a hacer cosas nuevas, nunca se deja de aprender de los maestros como tu, a mi ni se me pasa por la cabeza hacer estas cosas.
Modificar lo hecho es sencillo, pensarlo y hacerlo es diferente.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #13  
Antiguo 31-08-2010
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
hola ecfisa soy muy malo para esto ! te dejo mi pequeño proyecto yo creo que no estoy al nivel como para hacer eso que me dijiste , si podes ver mi codigo y darme algun ejemplo te lo agradezco !
http://rapidshare.com/files/416142919/project1.zip
Responder Con Cita
  #14  
Antiguo 31-08-2010
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
jaja esto es para hacer propaganda con alguna pentium que consiga y algun monitor viejito ya que hacer esto con led's y pic's no es muy rentable y no se pueden escribir muchas letras ! (salvo algunos comerciales) !

creo que ami tambien me esta agarrando calambre cerebral !
Responder Con Cita
  #15  
Antiguo 31-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Por algun lado tengo un componente que simula un led.
Es como lo que quieres hacer solo que se ve como si fueran leds.
Si lo encuentro lo pondre aqui.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #16  
Antiguo 31-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Caral Ver Mensaje
Hola
Es interesante y curioso el efecto de lectura que hace y la representación en el caption.
Estos códigos son buenos para aprender a hacer cosas nuevas, nunca se deja de aprender de los maestros como tu, a mi ni se me pasa por la cabeza hacer estas cosas.
Modificar lo hecho es sencillo, pensarlo y hacerlo es diferente.
Saludos

Mi estimado amigo, lo de 'No lo sé' fué sólo una broma. Por supuesto que sé lo que hace, jamás pongo código a un compañero sin probarlo primero... Te aseguro que lo revisé a conciencia, hasta señalé aquí , un error que de orígen traía el mismo.

Y como ya te he comentado en anteriores oportunidades, el que no deja de aprender leyendote soy yo...

Saludos.
Responder Con Cita
  #17  
Antiguo 31-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Como siempre, todo lo tengo bien ordenado.
Aqui esta el Componente.
Saludos
__________________
Siempre Novato

Última edición por Caral fecha: 10-09-2010 a las 23:41:47.
Responder Con Cita
  #18  
Antiguo 31-08-2010
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
hola caral ! que buena onda !! fijate tambien creo que hay un componente que viene incluido en delphi 7 por lo menos que es shape creo que se llama ! y tiene una propiedad shape (se llama igual) y la pones en circulo ! yo hacia eso antes ! jeje pero ustedes son los que saben , ahora voy a descargar tu componente caral !

en rad tambien esta !

PD : lo bueno de este componente lblmarquee es que se puede cambiar el tipo de letra ! se puede mover las palabras hacia adelante y hacia atrar , cambiar el color de las letras y del fondo y Dios sabra que mas !.

saludos !

Última edición por gaston260 fecha: 31-08-2010 a las 03:58:39.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como usar el componente lblmarquee ? gaston260 OOP 2 26-08-2010 00:06:58
como usar el componente lblmarquee gaston260 API de Windows 0 25-08-2010 02:21:43
Ir al ultimo renglon en un StringGrid palets Varios 2 18-02-2009 22:11:59
Renglon seleccionado en DBGRID advancexz Gráficos 1 28-06-2008 00:53:45
Como hacer un CD protegido para que no se pueda copiar federiconqn21 Varios 11 24-04-2007 05:52:07


La franja horaria es GMT +2. Ahora son las 02:44:38.


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
Copyright 1996-2007 Club Delphi