1 {Modelo de formulario de configuración que usa dos Frame de propiedades}
2 unit FormConfig;
3 {$mode objfpc}{$H+}
4 
5 interface
6 
7 uses
8   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Buttons,
9   StdCtrls, iniFiles, SynEdit, FrameCfgEdit,
10   ConfigFrame;   //para interceptar TFrame
11 type
12 
13   { TConfig }
14 
15   TConfig = class(TForm)
16     BitAplicar: TBitBtn;
17     BitCancel: TBitBtn;
18     BitAceptar: TBitBtn;
19     lstCateg: TListBox;
20     procedure BitAceptarClick(Sender: TObject);
21     procedure BitAplicarClick(Sender: TObject);
22     procedure FormCreate(Sender: TObject);
23     procedure FormDestroy(Sender: TObject);
24     procedure FormShow(Sender: TObject);
25     procedure lstCategClick(Sender: TObject);
26   public
27     msjError: string;    //para los mensajes de error
28     arIni   : String;      //Archivo de configuración
29     //frames de configuración
30     Edit: TfraCfgEdit;
31     procedure escribirArchivoIni;
32     procedure Iniciar(ed: TSynEdit);
33     procedure Mostrar;
34   end;
35 
36 var
37   Config: TConfig;
38 
39 implementation
40 {$R *.lfm}
41 
42 { TConfig }
43 
44 procedure TConfig.FormCreate(Sender: TObject);
45 begin
46   //************  Modificar Aquí ***************//
47   //Crea dinámicamente los frames de configuración
48   Edit:= TfraCfgEdit.Create(Self);
49   Edit.parent := self;
50 
51   /////// verifica archivo INI /////////////
52   arIni := GetIniName;
53 end;
54 
55 procedure TConfig.BitAceptarClick(Sender: TObject);
56 begin
57   bitAplicarClick(Self);
58   if msjError='' then self.Close;  //sale si no hay error
59 end;
60 procedure TConfig.BitAplicarClick(Sender: TObject);
61 begin
62   msjError := WindowToProp_AllFrames(self);
63   if msjError<>'' then begin
64     showmessage(msjError);
65     exit;
66   end;
67   escribirArchivoIni;   //guarda propiedades en disco
68 end;
69 
70 procedure TConfig.Iniciar(ed: TSynEdit);
71 //Inicia el formulario de configuración. Debe llamarse antes de usar el formulario y
72 //después de haber cargado todos los frames.
73 begin
74   //inicia los Frames creados
75   Edit.Iniciar('texto',ed);
76 
77   msjError := ReadFileToProp_AllFrames(self, arINI);
78 end;
79 
80 procedure TConfig.FormDestroy(Sender: TObject);
81 begin
82   Free_AllConfigFrames(self);  //Libera los frames de configuración
83 end;
84 
85 procedure TConfig.FormShow(Sender: TObject);
86 begin
87   msjError := PropToWindow_AllFrames(self);
88 end;
89 
90 procedure TConfig.lstCategClick(Sender: TObject);
91 begin
92   Hide_AllConfigFrames(self);   //oculta todos
93   //************  Modificar Aquí ***************//
94   if lstCateg.ItemIndex = 0 then Edit.ShowPos(120,0) ;
95 //  if lstCateg.ItemIndex = 1 then Colores.ShowPos(120,0);
96 end;
97 
98 procedure TConfig.Mostrar;
99 //Muestra el formulario para configurarlo
100 begin
101   lstCateg.ItemIndex:=0;   //define frame inicial
102   lstCategClick(self);
103   Showmodal;
104 end;
105 
106 procedure TConfig.escribirArchivoIni;
107 //Escribe el archivo de configuración
108 begin
109   msjError := SavePropToFile_AllFrames(self, arINI);
110 end;
111 
112 end.
113 
114