Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Acceder a las propiedades de control en frames (https://www.clubdelphi.com/foros/showthread.php?t=35860)

Pedro-Juan 25-09-2006 13:01:36

Acceder a las propiedades de control en frames
 
:confused: Hola, un saludo
Cómo puedo acceder a los componentes (sus propiedades) de un frame?

necesito activar/desactivar buttons en varios frames dependiendo del estado del campo de una tabla, pero no hay manera.

//Declaración en interface de la unit del frame
bar Frame: TFrame;

//Esto no funciona, el button permanece igual
DataModule.TableAfterScroll (DataSet: TDataSet); //unit of DataModule
begin
if table.cField = 'No' then Frame.Button.Enabled:= False
else Frame.Button.Enabled:= True;
end;


La unit del frame está añadida a uses de la unit main y en otras uses en las units necesarias, todo esto está bien.

En definitiva, cómo se pueden cambiar propiedades de buttons u otros componentes puestos en un frame, o varios, desde otras units en runtime, por ejemplo, haciendo scroll en un grid(table) en su evento OnAfterScroll, teniendo en cuenta que este evento está en la unit del DataModule?

el Frame form está en Project/Options Autocreate forms

Creo que con este sencillo ejemplo de código y la explicación es suficiente. Tal vez podais ayudarme, he probado muchas cosas, pero nada funciona.

Muchas gracias

DarKraZY 25-09-2006 17:51:25

Hola!

Creo que estás confundiendo Forms con Frames. Un Frame debe descender de la clase TFrame, y no se puede realizar por ejemplo:
Código Delphi [-]
var
  Frame1: TFrame;
begin
  Frame1.Show; // ERROR
end;

Ya que un frame pertenece y está dentro de un formulario. Por ejemplo deberías acceder así:
Código Delphi [-]
var
  form1: TForm1;
begin
  form1.NombreFrame.Button.Enable := False;
end;

Pero yo incluso recomendaría crear un método (procedimiento o función) dentro de la clase Frame y llamarla desde diversos sitios:
Código Delphi [-]
type
  Frame1 = class(TFrame)
  // Componentes
  public
    procedure HabilitarBotones;
  end;

Código Delphi [-]
  
var
  form3: TForm3;
begin
  form3.Frame2.HabilitarBotones;
end;

Ledian_Fdez 26-09-2006 18:31:39

Frame???
 
Holas amigos.
Para que se utilizan los Frame??

DarKraZY 26-09-2006 23:04:39

Busca información por estos foros porque creo que ya se ha hablado de ello en otras ocasiones ;)

Pedro-Juan 27-09-2006 19:46:19

Hola
Creo que no son de los frames de Delphi de lo que estamos hablando, son otro tipo de componentes que no son nativos de delphi.
Si que van dentro del form y aunque no estoy seguro creo que se crean al pulsar en su barra, y se destruyen cuando pulsas en otro, ya que normalmente se utilizan varios (son como un menu).
Si quieres visita alphaskins.com y en su demo (gratis) puedes ver estos frames, ya que así los llaman ellos.
Muchas gracias por tu atención y un saludo.


La franja horaria es GMT +2. Ahora son las 14:42:50.

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