PDA

Ver la Versión Completa : tlabel enabled


anubis
09-05-2007, 20:42:23
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
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
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.

label1.Enabled:= True;
Label1.Name:= 'nadie';

Esto:
Tiene un error de sintaxis, echale un vistazo.

pasar.enabled:=true;
pasar.name:='habitacion?;
esto es correcto.

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


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í:


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:
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
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
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í:


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

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


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