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