Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   usar variables de otras units (https://www.clubdelphi.com/foros/showthread.php?t=42485)

anubis 16-04-2007 06:56:00

usar variables de otras units
 
Hola, sigo preguntando cositas si me lo permitis :(.

Dentro de una procedure de una unit tengo unas variables que queria usar en otra unit para usar el contenido de las mismas, pero no se como hacerlo. Es decir, si se realiza un evento dentro de esa procedure, dependiendo del resultado que envie un dato a otra unidad y que esa unidad ya decida que hacer con ese dato. Puede ser uno o varios.

gracias...

voy aprendiendo

Delphius 16-04-2007 07:10:20

Hola anubis, para ello debes declarar en uses la unidad en donde se encuentran definidas las variables.

Por ejemplo:
Código Delphi [-]
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, unit2, StdCtrls;
  // unit2 es la unidad que tiene declarada las unidades
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  // que haya que hacer
end;

Si Unit1 es la unidad en donde están declarado tus procedimientos, funciones, y eventos... en su sección uses debes indicar que unidades emplear.

Si recien te estas iniciando en Delphi, puedes darle una leída a la Cara Oculta de Delphi 4. Es un libro (pdf) que no tiene desprecio alguno. Te va a servir de mucho para comenzar. No te asustes por lo de delphi 4, si tu usas otra versión da lo mismo, no ha cambiado mucho el lenguaje.

Saludos,

anubis 16-04-2007 07:20:17

se agradece la respuesta.
Te comento, desde el form1-unit1 llamo al form2-unit2, pero si pongo en la unit2 en uses la unit1 me da error porque me pone unit circular, las llamadas a otros forms las hago con showmodal.

Me referia, a que tengo un procedimiento que tiene una variable y me interesaba usar el contenido de esa variable en la unit2 y nose como hacerlo.

Estoy buscando la cara oculta del delphi.

gracias

Delphius 16-04-2007 07:28:13

Eso se debe a que haz hecho una refencia circular: unit1 llama a unit2 y unit2 llama a unit1.

Para salvar el error, borra la declaración de la unidad de uno de ellos de la sección interface y declara:

Código Delphi [-]
uses
  Unit1; // o Unit2

en la sección implentation.

Para saber más del tema te mando este link:
http://www.clubdelphi.com/foros/show...encia+circular

Saludos,

anubis 16-04-2007 07:39:36

gracias de nuevo, ya esta corregido, pero sigo sin poder saber como usar una variable y/o contenido en otro form, porque si solo paso una variable como por ejemplo label1, y la quiero visualizar en el otra unidad que tiene otro form, la verdad es uqe no me sale.

:confused:

Delphius 16-04-2007 07:48:13

¿Label1 es una variable de que tipo? ¿O es que label1 es un TLabel?
¿En que form está Label1? ¿En el form al que se le llama?

Te recomiendo que muestres un poco de código para ver que es lo que estás tratando de hacer.

anubis 16-04-2007 07:59:47

Ese es un procedure de la unit entrada

Código Delphi [-]
procedure Tfentrada.lh101Click(Sender: TObject);

  var
   label2:tlabel;
  comp:TShape;
  lbl:TLabel;
  nom:String;
begin
       // Acceder al label
  lbl := TLabel(Sender);
  // Acceder al pabel relacionado con ese label
  nom := copy(lbl.Name, 2, Length(lbl.Name));
  // Con esto si el label es el lh101 nom valdrá h101,
  // buscamos el shape con ese nombre
  comp := TShape(FindComponent(nom));

  fhabitacion.showmodal;
     if comp.brush.color = clYellow then
      begin
      comp.Brush.color:=clRed;
      lbl.font.Color:=clYellow
      end
    else
      begin
      comp.Brush.color:=clYellow;
      lbl.Font.color:=clblack
      end
end;

quiero pasar a la unit habitacion la variable lbl que es un tlabel, pero imagino que valdra para cualquiera.

y para visualizarla en esto form

grfacias de nuevo

anubis 16-04-2007 09:24:04

gracias, ya esta resuelto. Solo tenia que declarar la variable en public en vez de en la procedure, imagino que sera lo mismo para el type.

gracias de nuevo


La franja horaria es GMT +2. Ahora son las 13:30:46.

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