Foros Club Delphi

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

anubis 09-05-2007 20:42:23

tlabel enabled
 
Aunque ya hice una pregunta en otro post relacionada con esto, voy a preguntar diferente.

si creo un tlabel en una procedure por ejemplo, porque no puedo poner esto
pasar.enabled:=true;
pasar.name:='habitacion?;

gracias

Caral 09-05-2007 20:45:22

Hola anubis
Que?, como?, cuando?, donde?:D
Que es Pasar?
Cual es el nombre del label?
Saludos

anubis 09-05-2007 20:47:29

pasar es un tlabel que cree en un procedure.

egostar 09-05-2007 20:51:13

Cita:

Empezado por anubis
Aunque ya hice una pregunta en otro post relacionada con esto, voy a preguntar diferente.

si creo un tlabel en una procedure por ejemplo, porque no puedo poner esto
pasar.enabled:=true;
pasar.name:='habitacion?;

gracias

Y que error te da:confused:, que quieres hacer cuando enabled lo pones a true, es acaso que lo tienes en false en tiempo de diseño:confused:, porque cambiar pasar (imagino que así llamaste al label en tiempo de diseño) por habitacion en el name del Label.

Podrías explicarte mejor que quieres hacer?

Salud OS.

anubis 09-05-2007 21:17:39

Gracias. En tiempo de diseño lo tengo puesto, pasar.enabled:=true; pero me da error en tiempo de ejecucion.
El error que me da es de raise excepction class eaccess violation with message 'access violation with address .....

no se puede crear una tlabel en una procedure y asignar valores como en una tlabel de un form?

egostar 09-05-2007 21:19:43

Cita:

Empezado por anubis
Gracias. En tiempo de diseño lo tengo puesto, pasar.enabled:=true; pero me da error en tiempo de ejecucion.
El error que me da es de raise excepction class eaccess violation with message 'access violation with address .....

no se puede crear una tlabel en una procedure y asignar valores como en una tlabel de un form?

Y ya creaste el TLabel, antes de asignar las propiedades.

Podrias poner la parte de código que tienes, parecería que te hace falta algo.

Salud OS.

Caral 09-05-2007 21:38:11

Hola
Esto:
En ejecucion o lo que sea funciona.
Código Delphi [-]
   label1.Enabled:= True;
   Label1.Name:= 'nadie';
Esto:
Tiene un error de sintaxis, echale un vistazo.
Código Delphi [-]
pasar.enabled:=true;
pasar.name:='habitacion?;
esto es correcto.
Código Delphi [-]
pasar.enabled:=true;
pasar.name:= 'habitacion';
Ademas como dice el maestro egostar, el label viene en true standard.
Saludos

egostar 09-05-2007 21:48:44

Tienes razón amigo Caral, la sintaxis esta equivocada. Pudo haber sido un error de dedo.

Bueno, de acuerdo a la pregunta de anubis

Cita:

Empezado por anubis
no se puede crear una tlabel en una procedure y asignar valores como en una tlabel de un form?

Pues si, si se puede crear un TLabel en un procedure.

Seria mas o menos así:

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  pasar: TLabel;
begin
   pasar := TLabel.Create(Form1);
   pasar.Parent  := Form1;
   pasar.enabled := true;
   pasar.name    := 'Label2';
   pasar.Caption := 'Habitacion';
   pasar.Visible := True;
   pasar.Top     := 100;
   pasar.Left    := 100;
   pasar.Width   := 100;
end;

Salud OS.

Edito:

El riesgo que se corre haciendo esto es que si se da click en el botón mas de una vez, habrá un error, así que hay que tener cuidado, además no olvides destruir el TLabel. La idea es que veas que si se puede, las validaciones ya dependen de lo que quieras hacer con el objeto.

Caral 10-05-2007 00:03:43

Hola Egostar
La verdad me guie por la primera parte:
Cita:

En tiempo de diseño lo tengo puesto
Supuse que ya lo tendria, tu respuesta y codigo son impecables, Maestro.
Saludos

Wellnic 10-05-2007 00:50:21

Cita:

Empezado por egostar
Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  pasar: TLabel;
begin
   pasar := TLabel.Create(Form1);
   pasar.Parent  := Form1;
   pasar.enabled := true;
   pasar.name    := 'Label2';
   pasar.Caption := 'Habitacion';
   pasar.Visible := True;
   pasar.Top     := 100;
   pasar.Left    := 100;
   pasar.Width   := 100;
end;

A propósito de esto, ¿se les puede asignar o crear eventos a los objetos creados de esta manera? ¿Se puede crear código en tiempo de ejecución?

egostar 10-05-2007 01:57:56

Cita:

Empezado por Wellnic
A propósito de esto, ¿se les puede asignar o crear eventos a los objetos creados de esta manera? ¿Se puede crear código en tiempo de ejecución?

Pues si, si se puede.

Seria así:

Código Delphi [-]
procedure TForm1.PasarClick(Sender: TObject);
begin
  ShowMessage('Click en Label2');
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  pasar: TLabel;
begin
   pasar := TLabel.Create(Form1);
   pasar.Parent  := Form1;
   pasar.name    := 'Label2';
   pasar.Caption := 'Habitacion';
   pasar.Top     := 100;
   pasar.Left    := 100;
   // Aquí se crea el Evento, por ejemplo OnClick.
   pasar.OnClick := PasarClick;
end;

Salud OS.

anubis 10-05-2007 07:51:25

Gracias por las aportaciones, pero no me funciona snif

tengo este codigo
Código Delphi [-]
procedure Trregistro.xtipohabitaClick(Sender: TObject);
var
fila,columna:integer;
pasar:tlabel;
textos:string;
begin
   pasar := TLabel.Create(self);
   pasar.Parent  := fentrada;
   pasar.enabled:=true;
fila:=xtipohabita.col;
columna:=xtipohabita.row;
if xtipohabita.cells[fila,columna]<>'' then
  begin
   fentrada.ha:=strtoint(xtipohabita.cells[fila,columna]);
   textos:=xtipohabita.cells[fila,columna];
   pasar.Name:='Lh'+textos;
    pasar.caption:=textos;
    fentrada.lbl.name:='lh'+textos;
   pasar.caption:=xtipohabita.cells[fila,columna];
   fentrada.lbl.enabled:=true;
   fentrada.refresh;
 showmessage(fentrada.lbl.caption);
  pasar.destroy;
  end;
end;

tengo en el form fentrada los labels por ejemplo el label maestro por asi decirlo se llama en caption 101, en name lh101, pero esos label el resto son lh102, etc.....
aplicando el codigo que me habeis dicho, podria hacer que el name del label sea lh110 y ahi redibujarlo en fentrada, pero no funciona, me debe faltar algo imagino.
El problema es poder modificar cualquier label del form fentrada.

gracias por la paciencia

anubis 10-05-2007 08:32:50

Gracias, ya pude, en otro post me dieron una solucion, ahi la pongo

Código Delphi [-]
procedure Trregistro.xtipohabitaClick(Sender: TObject);
var
fila,columna:integer;
pasar:tlabel;
begin
fila:=xtipohabita.col;
columna:=xtipohabita.row;
if xtipohabita.cells[fila,columna]<>'' then
  begin
   fentrada.ha:=strtoint(xtipohabita.cells[fila,columna]);
    pasar := TLabel(fentrada.FindComponent('Lh'+xtipohabita.cells[fila,columna]));
    pasar.caption:=xtipohabita.cells[fila,columna];
    pasar.name:='Lh'+xtipohabita.cells[fila,columna];
    pasar.enabled:=true;
  end;
end;
por si sirve, muchas gracias


La franja horaria es GMT +2. Ahora son las 11:17:31.

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