Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Componente TLabel (https://www.clubdelphi.com/foros/showthread.php?t=46637)

Caral 05-08-2007 18:24:13

Componente TLabel
 
Hola a todos y gracias de antemano por vuestra ayuda.
Estoy tratando de incursionar en este asunto de los componentes y no logro entender el concepto.
Lo que tengo:
Consegui un componente label que parpadea, esta simpatico, es este:
Código:

unit Blinklbl;

interface

uses
  Classes, StdCtrls, ExtCtrls;    { TTimer se declara en ExtCtrls }

type
  TBlinkLabel = class(TLabel)    {TBlinkLabel deriva de TLabel}
  private
    FVelocidad : integer;        {Frecuencia de parpadeo}
    FTimer : TTimer;            {Timer para la frecuencia}
    procedure SetVelocidad(valor : integer);  {Almacena la velocidad}
  protected
    procedure parpadea(Sender : TObject);
  public
    constructor Create(AOwner : TComponent); override;    {Constructor}
    destructor Destroy; override;                        {Destructor}
  published
    property Velocidad : integer read FVelocidad write SetVelocidad default 400;
  end;

procedure Register;

implementation

constructor TBlinkLabel.Create(AOwner : TComponent);
begin
  inherited Create(AOwner);      {Llama al constructor original (heredado)}
  FTimer := TTimer.Create(Self);  {Creamos el timer}
  FVelocidad := 400;              {Frecuencia (velocidad) por defecto}
  FTimer.Enabled:=True;          {Activamos el timer}
  FTimer.OnTimer:=parpadea;      {Asiganamos el método parpadea}
  FTimer.Interval:=FVelocidad;    {Asignamos el intervalo del timer = frecuencia parpadeo}
end;

destructor TBlinkLabel.Destroy;
begin
  FTimer.Free;          {Liberamos el timer}
  inherited destroy;    {Llamamos al destructor original (heredado)}
end;

procedure TBlinkLabel.SetVelocidad (valor : integer);
begin
  If FVelocidad <> valor then        {Sólo si el valor introducido es distinto del almacenado}
  begin
    if valor < 0 then FVelocidad:=0;
    FVelocidad:=Valor;              {Asigna la velocidad}
    if FVelocidad=0 then FTimer.Enabled:=False else FTimer.Enabled:=True;
    {Si Fvelocidad=0 el mensaje debe estar siempre visible}
    FTimer.Interval:=FVelocidad;
    Visible:=True;
  end;
end;

procedure TBlinkLabel.parpadea(Sender : TObject);
begin
  if FTimer.Enabled then Visible := not(Visible);  {Alternativamente muestra y oculta el mensaje si el timer esta activado}
end;

procedure Register;        {Registro del componente}
begin
  RegisterComponents('Curso', [TBlinkLabel]);
end;

end.

Tambien consegui gracias a Egostar el codigo de un label que hace que el mensage se vea como una pantallita que corre, este es el codigo:
Código:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    btnStartStop: TButton;
    BitBtn1: TBitBtn;
    lblMarquee: TLabel;
    edText: TEdit;
    Label2: TLabel;
    UpDown1: TUpDown;
    edSpeed: TEdit;
    Label1: TLabel;
    rgDirection: TRadioGroup;
    procedure BitBtn1Click(Sender: TObject);
    procedure edTextChange(Sender: TObject);
    procedure btnStartStopClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure UpDown1Changing(Sender: TObject; var AllowChange: Boolean);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.edTextChange(Sender: TObject);
begin
lblMarquee.Caption := edText.Text;
end;

procedure TForm1.btnStartStopClick(Sender: TObject);
begin
  Timer1.Enabled := not Timer1.Enabled;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var txt : string;
begin
txt:= lblMarquee.Caption;
if rgDirection.ItemIndex = 0 then //left
lblMarquee.Caption:= Copy(txt, 2, length(txt)-1)  Copy(txt,1,1)
else //right
lblMarquee.Caption:= Copy(txt,length(txt)-1,1)  Copy(txt, 1, length(txt)-1);

end;

procedure TForm1.UpDown1Changing(Sender: TObject;
  var AllowChange: Boolean);
begin
  Timer1.Interval := 1000 div UpDown1.Position;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 edTextChange(Self);
end;

end.

Que quiero hacer:
Quiero hacer un componente Label, que se coloque en un form y que colocando un edit en el mismo, pase la informacion de este de lado a lado, como lo hace el programa.
Gracias por vuestro tiempo y ayuda.
Saludos

Caral 05-08-2007 19:10:50

Hola
Bueno, por aqui sigo pensando.
Creo que la cosa podria andar por aqui:
Código:

var txt : string;
begin
txt:= lblMarquee.Caption;
if rgDirection.ItemIndex = 0 then //left
lblMarquee.Caption:= Copy(txt, 2, length(txt)-1)  Copy(txt,1,1)

Creo que esto hace que el label se mueva, el asunto es como lo relaciono con el componente.
Bueno supongo que por aqui va el asunto, me ayudais.
Saludos

eduarcol 05-08-2007 19:17:19

Con gusto te ayudo, pero si me lo simplificas un poco en la explicacion me perdi y no logro entender que quieres hacer, hasta lo que lei :

Tienes un Label y un Edit, que hace el label que hace el edit????

Caral 05-08-2007 19:23:38

Hola amigo
Muy simple:
Quiero hacer un componente TLabel.
El componente tiene que hacer lo que hace en el programa (segundo codigo) que postee, osea moverse de un lado a otro.
Este componente tiene que recibir el caption de un edit normal que coloque en el form, independiente del componente que quiero hacer.
El componente que postee (primer codigo) lo que hace es parpadear, lo que quiero que haga es moverse, por eso puse el codigo del programa para que lo relacionarais.
Vamos hombre que esta claro, ya se, es domingo.:D
Saludos

eduarcol 05-08-2007 19:32:01

Precisamente alli esta mi duda, es que es domingo y aqui en mi casa sostienen un interesante partido de domino por eso me cuesta concentrarme, segun leo el codigo que muestras toma desde un edit lo que necesita, por eso te digo si ya esta listo no entiendo que mas necesitas, o es que el codigo no funciona???

si no me equivoco el lbmarquee se actualiza desde edtext en el evento onchange :confused:

Caral 05-08-2007 19:39:27

Hola
Ya analizaste el segundo codigo, es realmente simple, solo que este no es un componente, es un programa, ya se que lo puedo convertir en un componente, pero me traeria el edit ademas de otros.
Los dos codigos funcionan perfectamente, Lo que quiero es hacer una mezcla de ambos, pero que solo quede el label, no el edit (como el primer codigo), el edit lo pondra a mi antojo en algun form, no importa cual.
La idea es que al poner el nuevo componente en un form pueda hacer que este se mueva y que el caption sea capturado de otro componente, edit, dbeit u otro.
Gracias por tu ayuda, quien va ganando?.
Saludos

eduarcol 05-08-2007 19:46:19

Ok ahora si entendi perdona mi lentitud, pues a mi modo de ver las cosas hay que crear un propiedad donde se relacion el edit que quieres y en el timer actualizar el caption, algo asi

Cita:

property MyEdit: TEdit read fTexto write fTexto;

Cita:

procedure TForm1.Timer1Timer(Sender: TObject);
var txt : string;
begin
lblMarquee.Caption := fTexto.Text;
txt:= lblMarquee.Caption;
if rgDirection.ItemIndex = 0 then //left
lblMarquee.Caption:= Copy(txt, 2, length(txt)-1) Copy(txt,1,1)
else //right
lblMarquee.Caption:= Copy(txt,length(txt)-1,1) Copy(txt, 1, length(txt)-1);
end;
Que te parece mi propuesta???

Caral 05-08-2007 19:53:25

Hola
Ahora el lento soy yo.
La Propuesta del Property, la capto, esto iría en el componente asi:
Código:

published
    property Velocidad : integer read FVelocidad write SetVelocidad default 400;
    property MyEdit: TEdit read fTexto write fTexto;
  end;

Lo que no entiendo es como relaciono el codigo que hace que se mueva, en que parte del componente lo coloco, en este caso lo estas colocando en el form, no en el componente.
Saludos

eduarcol 05-08-2007 19:58:50

Ok la solucion esta en el codigo anterior, y lo unico que tienes es decirle al label en su propiedad nueva cual es el edit desde el que se actualizara, si te fijas en el codigo ontimer que te pase ahi una linea en negrita a mi entender esa solucionaria tu problema aunado a la configuracion de esta propiedad que hablamos

seoane 05-08-2007 20:06:32

Vamos a ver que te parece esto:
Código:

unit Blinklbl;

interface

uses
  Classes, StdCtrls, ExtCtrls;

type
  TAnimLabel = class(TLabel)
  private
    FVelocidad: integer;
    FTimer: TTimer;
    procedure SetVelocidad(Valor: Integer);
  protected
    procedure Animar(Sender: TObject);  virtual; abstract;
  public
    constructor Create(AOwner : TComponent); override;
    destructor Destroy; override;
  published
    property Velocidad: Integer read FVelocidad write SetVelocidad;
  end;

  TBlinkLabel = class(TAnimLabel)
  protected
    procedure Animar(Sender: TObject); override;
  end;

  TMarqueeLabel = class(TAnimLabel)
  private
    FInvertir: Boolean;
  protected
    procedure Animar(Sender: TObject); override;
  published
    property Invertir: Boolean read FInvertir write FInvertir;
  end;

procedure Register;

implementation

{ TAnimLabel }

constructor TAnimLabel.Create(AOwner : TComponent);
begin
  inherited Create(AOwner);
  FTimer := TTimer.Create(Self);
  FTimer.OnTimer:= Animar;
  FVelocidad:= 400;
  FTimer.Interval:= FVelocidad;
  FTimer.Enabled:= True;
end;

destructor TAnimLabel.Destroy;
begin
  FTimer.Free;
  inherited destroy;
end;

procedure TAnimLabel.SetVelocidad(Valor: Integer);
begin
  If FVelocidad <> Valor then
  begin
    if Valor <= 0 then
    begin
      FVelocidad:= 0;
      FTimer.Enabled:= FALSE;
    end else
    begin
      FVelocidad:= 0;
      FTimer.Enabled:= FALSE;
    end;
    FTimer.Interval:= FVelocidad;
  end;
end;

{ TBlinkLabel }

procedure TBlinkLabel.Animar(Sender: TObject);
begin
  Visible:= not(Visible);
end;

{ TMarqueeLabel }

procedure TMarqueeLabel.Animar(Sender: TObject);
begin
  if FInvertir then
    Caption:= Copy(Caption,Length(Caption),1) +  Copy(Caption,1,Length(Caption)-1)
  else
    Caption:= Copy(Caption,2,MAXINT) + Copy(Caption,1,1);
end;

procedure Register;
begin
  RegisterComponents('Curso', [TBlinkLabel]);
  RegisterComponents('Curso', [TMarqueeLabel]);
end;

end.

Creamos un componente TAnimLabel, que nos servirá como base para los otros dos: TBlinkLabel y TMarqueeLabel. El componente TMaruqeeLabel anima cualquier texto que tenga como caption.

Caral 05-08-2007 20:07:45

Hola
La verdad no lo agarro, para mi sigue siendo un codigo en el form, no en el componente, el componente deberia de hacer que se mueva la informacion del caption por medio de su timer (cerado dentro del componente), no el codigo del form.
No lo capto, perdon.
Saludos

eduarcol 05-08-2007 20:10:31

Mas claro imposible seoane el aunto es como tomar automaticamente el texto en otro edit de un formulario y se actualize en el caption.

pero ya tenemos tu componente de base, solo hay que agregarle las modificaciones, y caral si te fijas el timer esta dentro del componente, revisa el create...

Caral 05-08-2007 20:12:21

Hola Seoane.
Impresionante
Me queda una duda, estas creando dos componentes o uno solo?
De todos modos lo voy a probar.
Increible, maestro, a esto me referia, a que el componente hiciera su propia rutina.
Saludos

Caral 05-08-2007 20:13:44

Hola
Cita:

aunto es como tomar automaticamente el texto en otro edit de un formulario y se actualize en el caption.
Buena pregunta.
Saludos

eduarcol 05-08-2007 20:15:44

Si no hay otra solucion podriamos tomar la que coloque al principio, me sigue pareciendo razonable

Aunque ahora que lo pienso podriamos hacer esto

Cita:

if Parent.FindComponent('txOrigen') is TEdit then
Caption := Parent.FindComponent('txOrigen').Text;
if FInvertir then
Caption:= Copy(Caption,Length(Caption),1) + Copy(Caption,1,Length(Caption)-1)
else
Caption:= Copy(Caption,2,MAXINT) + Copy(Caption,1,1);
esto lo qe hace es que toma un edit llamado txOrigen que se encuentre en el mismo parent de la etiqueta y lo pasa al caption

Noi es lo ideal pero deberia funcionar

seoane 05-08-2007 20:44:15

Bueno, no entiendo por que intentar relacionar el TEdit con el label dentro del propio código del label, lo mas lógico seria usar el caption y el método OnChange del TEdit.

Pero el cliente siempre tiene razón :D
Código:

unit Blinklbl;

interface

uses
  Classes, StdCtrls, ExtCtrls;

type
  TAnimLabel = class(TLabel)
  private
    FVelocidad: integer;
    FTimer: TTimer;
    procedure SetVelocidad(Valor: Integer);
  protected
    procedure Animar(Sender: TObject);  virtual; abstract;
  public
    constructor Create(AOwner : TComponent); override;
    destructor Destroy; override;
  published
    property Velocidad: Integer read FVelocidad write SetVelocidad;
  end;

  TBlinkLabel = class(TAnimLabel)
  protected
    procedure Animar(Sender: TObject); override;
  end;

  TMarqueeLabel = class(TAnimLabel)
  private
    FEdit: TEdit;
    FIndice: Integer;
  protected
    procedure Animar(Sender: TObject); override;
  published
    property Edit: TEdit read FEdit write FEdit default nil;
  end;

procedure Register;

implementation

{ TAnimLabel }

constructor TAnimLabel.Create(AOwner : TComponent);
begin
  inherited Create(AOwner);
  FTimer := TTimer.Create(Self);
  FTimer.OnTimer:= Animar;
  FVelocidad:= 100;
  FTimer.Interval:= FVelocidad;
  FTimer.Enabled:= True;
end;

destructor TAnimLabel.Destroy;
begin
  FTimer.Free;
  inherited destroy;
end;

procedure TAnimLabel.SetVelocidad(Valor: Integer);
begin
  If FVelocidad <> Valor then
  begin
    if Valor <= 0 then
    begin
      FVelocidad:= 0;
      FTimer.Enabled:= FALSE;
    end else
    begin
      FVelocidad:= 0;
      FTimer.Enabled:= FALSE;
    end;
    FTimer.Interval:= FVelocidad;
  end;
end;

{ TBlinkLabel }

procedure TBlinkLabel.Animar(Sender: TObject);
begin
  Visible:= not(Visible);
end;

{ TMarqueeLabel }

procedure TMarqueeLabel.Animar(Sender: TObject);
var
  Str: String;
begin
  if Assigned(FEdit) then
    Str:= FEdit.Text
  else
    Str:= '';
  if Length(Str) > 0 then
  begin
    FIndice:= ((FIndice + 1) mod Length(Str)) + 1;
    Caption:= Copy(Str,FIndice,MAXINT) + Copy(Str,1,FIndice - 1);
  end else
    Caption:= '';
end;

procedure Register;
begin
  RegisterComponents('Curso', [TBlinkLabel]);
  RegisterComponents('Curso', [TMarqueeLabel]);
end;

end.

Ahora el TMarqueeLabel tiene una propiedad nueva llamada Edit. Colocas el TMarqueeLabel en el formulario, colocas un TEdit y asignas ese TEdit a la propiedad Edit.

¿Que te parece ahora? :confused:

eduarcol 05-08-2007 20:49:38

Magnifico amigo, a eso me referia tal como lo habia pensado

Caral 05-08-2007 20:58:49

Hola
No se por que no lo puedo compilar, me da este error:
Cita:

Error in module: CONTAINS clause is incorrect
Ni idea.
Explico lo que hice, lo mas facil, crear un unit y tratar de instalarlo.
Que hago mal, aparte de no saber.
Saludos

eduarcol 05-08-2007 21:01:38

abre una unidad nueva, copia el codigo excepto la primera linea (unit)

grabalo, y deberia funcionar

Delphius 05-08-2007 21:01:51

Hola a todos, llevo unos minutos declarando ese componente. Lo tengo igual a seoane, el problema, que no se como resolver, es que cuando uno cambia el contenido del edit, deja de funcionar el efecto de animación.

La diferencia con respecto a lo que tiene seoane es esta:

Código:

unit Blinklbl2;

interface

uses Blinklbl, StdCtrls, Classes;

type
  TMarqueeLabelEdit = class(TMarqueeLabel)
    private
      FMyEdit: TEdit;
      FInvertir: boolean;
      procedure SetMyEdit(Value: TEdit);
    protected
      procedure Animar(Sender: TObject); override;
    published
      property MyEdit: TEdit read FmyEdit write SetMyEdit;
      property Invertir: boolean read FInvertir write FInvertir;
  end;

procedure Register;

implementation

procedure TMarqueeLabelEdit.Animar(Sender: TObject);
begin
  if Assigned(MyEdit) then
  if FInvertir then
    Caption:= Copy(Caption,Length(MyEdit.Text),1) +  Copy(Caption,1,Length(MyEdit.Text)-1)
  else
    Caption:= Copy(MyEdit.Text,2,MAXINT) + Copy(MyEdit.Text,1,1);
end;

procedure TMarqueeLabelEdit.SetMyEdit(Value: TEdit);
begin
  FMyEdit := Value;
  if Value <> nil then Value.FreeNotification(self);
end;


procedure Register;
begin
  RegisterComponents('Curso', [TMarqueeLabelEdit]);
end;

end.

Saludos,

eduarcol 05-08-2007 21:10:51

Acabo de probar el codigo de seoane completo y no me ha dado problemas, lo instale y modifique el texto en ejecucion funciona muy bien
lo qu eno entiendo es apara que le quitas parte del codigo, por ejemplo si no se ejecuta el create no va a ejecutarse el movimiento que se le asigna en ese evento

Caral 05-08-2007 21:18:18

Hola
Que estoy haciendo mal.
Creo un unit nuevo, lo guardo con el nombre Blinklbl
Voy a Component, instal component
me da el error que mencione, algo de class
Que puede ser, que estoy haciendo mal.
Tambien lo hice como me mencionaste sin cambiar el nombre el unit, no me funciona.
Saludos

Delphius 05-08-2007 21:23:36

listo, hice la prueba... era un error conceptual mio y de apurado quise meter código y metí mal el dedo:p

Lo que estaría interesante, si es que le sirve a Caral, es contar con la posibilidad de deshabilitar/habilitar los efectos. E inclusive, porque no... adaptarlo para varios tipos de efectos:

1. Desplazamiento a la izquierda
2. Desplazamiento a la derecha
3. Cierre: que el texto vaya desplazandose desde los extremos al medio.
4. Apertura: que el texto vaya desplazandose desde el centro hacia afuera.
5. Aleatorio.

No creo que sea tan complicado generarlos... Se que lo más posible es que hay componentes ya hechos que realizan estas cosas... pero como práctica no está demás:).

Saludos,

eduarcol 05-08-2007 21:23:47

Pues en el error que mencionastes no dice nada de class sino clause.

Intenta esto, cierra delphi por completo, abrelo y selecciona Close All, luego File --> New --> Unit

borra todo excepto la primera linea, unit

copia el codigo, excepto la primera linea, dale guardar y asignale un nombre

Cierra todo de nuevo y abre instalar componentes, busca la unidad que acabas de guardar y le das ok, eso deberia instalarla

que delphi utilizas????

eduarcol 05-08-2007 21:27:25

Si te fijas en el primer codigo estan los puntos que tu contemplas en el 1 y 2

Caral 05-08-2007 21:32:53

Hola
Paso a paso y lo mismo.
Pienso que tiene que ver con esto.
Cita:

procedure Register;
begin
RegisterComponents('Curso', [TBlinkLabel]);
RegisterComponents('Curso', [TMarqueeLabel]);
end;
Vosotros estais cambiando algo? o solo lo copias y lo pegas?.
Me sigue dando el mismo error.
Uso delphi 6.
Saludos

Delphius 05-08-2007 21:34:00

Cita:

Si te fijas en el primer codigo estan los puntos que tu contemplas en el 1 y 2
Cierto! para ello está invertir!:p
Olvida los puntos 1 y 2.:D

Con respecto al error que le da a Caral... a mi no me arroja nada, todo bien. Tengo Delphi 6, que es la versión que emplea Caral (tengo entendido).
Nunca vi ese error... ¿Caral... sobre que línea te arroja el "DICHOSO" error?

Saludos,

eduarcol 05-08-2007 21:36:38

Bueno ahora es que le hace falta a esta foro una herramienta: Acceso Remoto, seguro que seoane debe tener alguna :D porq por lo que dices no se me ocurre nada que echarle mano al codigo a ver

Caral 05-08-2007 21:51:14

Hola
Simplemente me manda ese mensaje no dice en donde.
Ya no se que hacer, primera vez que me pasa algo asi, nunca he tenido problemas al instalar un componente.
Que sera?.
Alguien trajo la bola de cristal?
Saludos

Caral 05-08-2007 22:00:39

Hola
Estaba tratando de abrir un paquete:
dclusr
Se supune que es donde se instala el componente (Delphi package source (*.dpk).
Al tratar de abrirlo me manda exactamente ese error.
Pregunto sera que meti las patas en algun lado y no puedo instalar componentes?
Tengo que instalarlo en otro lado?, se puede?
Saludos

Delphius 05-08-2007 22:03:13

Pues caral yo también estoy intrigado, yo me hecho componentes y a pesar de que al comienzo tuve inconvenientes para instalarlos... nunca vi ese error.

Espero que mis pasos te sean de ayuda:

1. Abro un nuevo proyecto. Abrí un unit nuevo, borre TODO y copié exactamente el código de seoane. Ni más ni menos.
2. anadí al dpr dicha unidad. Guardo el proyecto entero e indicando con el nombre Blinklbl, y no con Uxxxx (Puede que alli esté el problema?:confused:). De modo que en el dpr queda esto:

Código:

program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Blinklbl in 'Blinklbl.pas';

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

3. Hago run, y listo... funciona. No marca error.
4. Voy a Component -> Install Component.
5. En el cuadro de Unit File Name busco el Blinklbl.pas y lo selecciono. Doy OK.
6. Me aparece un mensaje: "Package dclusr.bpl will be rebuilt. ¿Continue?" Le digo YES.
7. Me aparece un cuadro chico... con los componentes añadidos al paquete, le doy a Compile. Presiono en la X para cerrat y le indico que NO guarde los cambios. Y listo, el componente queda instalado...

A decir verdad, no se a que otra cosa puede deberse. Si tu dices que nunca antes tuviste problemas para instalar... a lo mejor tienes algún conflicto con algún componente que instalaste anteriormente.

Saludos,

eduarcol 05-08-2007 22:08:54

Se me acaba de ocurrir algo:

Cierra todo lo que tengas abierto File --> New --> Other

seleciona Package y agrega la unit que grabastes compile y install

Caral 05-08-2007 22:16:19

Hola
Efectivamente funciono, ahora me puedes decir que hice?.
Que se rompio de camino?:D
Por que no me lo garbaba en el otro sitio?:confused:
Saludos

eduarcol 05-08-2007 22:18:47

y como funciono?? si es como te lo dije el problema es que el dclusr esta creado con otros componentes y el error de contains es que las uses necesarias no se estaban creando correctamente

seoane 05-08-2007 22:19:11

Hola Caral, parece que el error puede ser debido que package que estas utilizando hace referencia a una unit que no existe. Abre el archivo con la extensión .dpk, busca la sección "Contains" y comprueba que todas las unidades que allí aparecen son correctas.

PD: Imagínate la que tengo que montar yo para instalar los componentes en Turbo Delphi Explorer ;) :D

Caral 05-08-2007 22:24:25

Hola
Intente abrir el archivo dclusr y me da ese error, no se como abrirlo?.
Saludos

Delphius 05-08-2007 22:25:07

¿Y como te funcionó?
Haciendo un nuevo paquete e instalandolo?

Si es con un nuevo paquete... abría que ver porqué no te dejaba instalarlo en el otro... algún error debe haber en dicho paquete...

Cuenta los pasos... porque me he quedado en b.... por saber a que %"!%" se debía el error. Porque si por las moscas algún dia me pase (ojalá que nunca) sepa como resolverlo... Digo... si no es molestia.

Saludos,

seoane 05-08-2007 22:26:04

:D Abrelo con el bloc de notas, no es mas que un archivo de texto.

eduarcol 05-08-2007 22:31:39

Cita:

Empezado por seoane (Mensaje 220450)
PD: Imagínate la que tengo que montar yo para instalar los componentes en Turbo Delphi Explorer ;) :D

Estoy intrigado, ¿¿no se vale dar pistas?? :D:D

Caral por lo menos ya sabemos qe lograstes corromper el dclusr ahora explicanos como jejje :D

Caral 05-08-2007 22:31:46

Hola
Me sale esto:
Cita:

package dclusr;

{$R *.res}
{$R 'USAPPBAR.dcr'}
{$R 'TrayIcon.dcr'}
{$R 'ATEXTO.dcr'}
{$R 'ALed.dcr'}
{$ALIGN 8}
{ ASSERTIONS ON}
{$BOOLEVAL OFF}
{ DEBUGINFO OFF}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{ LOCALSYMBOLS OFF}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO OFF}
{$SAFEDIVIDE OFF}
{ STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST ON}
{$MINENUMSIZE 1}
{$IMAGEBASE $51000000}
{$DESCRIPTION 'Borland User Components'}
{$LIBSUFFIX '60'}
{$DESIGNONLY}
{$IMPLICITBUILD ON}

requires
rtl,
vcl,
designide;

contains
NumEdit in 'NumEdit.pas',
USAppBar in 'USAPPBAR.PAS',
TrayIcon in 'TrayIcon.pas',
ATexto in 'ATEXTO.PAS',
ALed in 'ALed.pas',
Blinklbl in 'Blinklbl.pas',

end.
Que significa?
Saludos


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

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