Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como acceder a un dfm paralelo en tiempo de diseño (https://www.clubdelphi.com/foros/showthread.php?t=81525)

cdac901 22-11-2012 00:26:16

Como acceder a un dfm paralelo en tiempo de diseño
 
Buenas Noches, espero ser los mas descriptivo posible en el titulo.

Delphi XE3, Windows 7

Tengo 2 dfm

El primero se llama Unit1.dfm:

Código Delphi [-]
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 237
  ClientWidth = 425
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 128
    Top = 40
    Width = 59
    Height = 13
    Caption = 'Hola Mundo '
  end
end

y este otro se llama Unit1_Paralelo.dfm:

Código Delphi [-]
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 237
  ClientWidth = 425
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 128
    Top = 40
    Width = 59
    Height = 13
    Caption = 'Hola Mundo Paralelo'
  end
end

El .pas esta de la siguiente forma

Código Delphi [-]
unit Unit1;

{$define DFM_PARALELO} //Con esta directiva se compila en tiempo de ejecucion Unit1.dfm o Unit1_Paralelo.dfm

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$ifdef DFM_PARALELO}
   {$R Unit1_Paralelo.dfm}
{$else DFM_PARALELO}
   {$R *.dfm}
{$endif DFM_PARALELO}

end.

Hasta ahora las pruebas que hecho han funcionado sin novedad, pero el detalle que tengo ahorita habra una forma en la que pueda acceder a Unit1_Paralelo.dfm en tiempo de diseño para hacerle cambios?.

De antemano gracias por las sugerencias que me puedan dar, y si hay otra forma de poder trabajar 2 .dfm con 1 .pas teniendo hacer cambios en los .dfm en tiempo de diseño se los agradeceria doblemente.

cdac901 22-11-2012 00:29:26

Por alguna razón el codigo quedo en una sola linea, al moderador si tiene la oportunidad de borrar el mensaje anterior o modificarlo se lo agradeceria, ya que no veo como modificarlo por los medios que tengo (Listo alineado como debe se gracias)

Al González 22-11-2012 01:19:26

Las que usas son directivas de compilación condicionales. Sólo al compilar para generar el código ejecutable es que son consideradas por Delphi.

Lo más parecido a «trabajar 2 .dfm con 1 .pas» es emplear herencia visual. Busca el término en Google y en estos mismos foros, encontrarás mucho material con ejemplos.

De todas formas conviene que detalles un poco más el origen de esa necesidad.

Saludos. :)

cdac901 22-11-2012 19:29:29

Hola Gracias por tu respuesta, la opción de herencia visual la propusimos para este caso, pero el problema que se nos presento con esta propuesta es que, en el formulario Padre tengo un Button1 (por ejemplo) en cada uno de los formularios hijos aparecera tambien aparecera Button1 sin la posibilidad de poder borrarlo en tiempo de diseño.

La idea de esto es tener 2 presentaciones del mismo producto. Me explico mejor

Ejemplo:

Venezuela: Pide el Numero de Control en una Factura de Compras.
Panama: No Pide el Numero de Control en una Factura de Compras.

Lo que se desea es quitar el Edit y el Label que pide el dato "Numero de Control" para Panama, sin la necesidad de ocultar dichos objetos con Visible := False en el .pas, internamente el codigo fuente funciona exactamente igual lo unico que no va a pedir el dato a nivel visual.

De antemano gracias por la ayuda prestada.

roman 22-11-2012 20:14:52

Cita:

Empezado por cdac901 (Mensaje 450194)
Ejemplo:

Venezuela: Pide el Numero de Control en una Factura de Compras.
Panama: No Pide el Numero de Control en una Factura de Compras.

Lo que se desea es quitar el Edit y el Label que pide el dato "Numero de Control" para Panama, sin la necesidad de ocultar dichos objetos con Visible := False en el .pas, internamente el codigo fuente funciona exactamente igual lo unico que no va a pedir el dato a nivel visual.

De antemano gracias por la ayuda prestada.

Bueno, pues la herencia visual que menciona Al, sigue siendo la mejor opción, en mi opinión. Lo que pasa es que la clase base sólo debería contar con los elementos comunes a todas las ventanas y de ahí derivar, añadiendo un descendiente que aumente el o los controles necesarios.

// Saludos


La franja horaria es GMT +2. Ahora son las 14:33:59.

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