Cuestión : Wor con el archivo del ini


Con:
con TINIFile.Create (ExtractPath (Form1.caption) + ' .ini')
quisiera trabajar en:
procedimiento TForm1.FormClose (remitente: TObject; acción del var: TCloseAction);
procedimiento TForm1.FormCreate (remitente: TObject);

necesito conseguir la trayectoria donde la inicialización de mi forma se almacena. Y la consigo del subtítulo de la forma.

Ejemplo:  el myform el archivo se localiza en: C:\myform
1:
2:
3:
4:
5:
6:
7:
Función TForm1.ExtractPath (Str: Secuencia): Secuencia;
Var
 P: Número entero;
comenzar
 P: =Pos (“: \”, Str);
 si entonces resultan P>0: =Copy (Str, P-1, longitud (Str)) Resultado otro: = '';
extremo;

Respuesta : Wor con el archivo del ini

No entiendo mucho de lo que usted quiere hacer, pero tengo cargar extensa/excepto de la unidad de la herramienta componentes y formo las características (subtítulos, estado comprobado, etc…) en los archivos de Ini.

Incluso si usted no quiere utilizarlo mientras que es, estoy seguro que usted encontrará porciones de ideas aquí.
Cuando usted incluye esta unidad en un proyecto, él inicializa automáticamente un archivo de Ini nombrado después del uso o el nombre del DLL que lo utilizan.

Todo lo que usted tiene que hacer es llamar
IniSaveComponnents
y
IniLoadComponnents

con un arsenal de los componentes o de las formas que usted quiere manejar:

procedimiento TForm1.FormCreate (remitente: TObject);
comenzar
 IniLoadComponnents ([uno mismo, edtParam1, chkOption1]); el => de // ahorra la forma, y 2 componentes
extremo;

procedimiento TForm1.FormDestroy (remitente: TObject);
comenzar
 IniSaveComponnents ([uno mismo, edtParam1, chkOption1]); el => de // ahorra la forma, y 2 componentes
extremo;


Usted puede agregar un parámetro adicional de la sección que sea agregado a la sección automática de Ini creada. Ése es ayudar a reagrupar un pedacito la llave/los valores en el Ini, si está utilizada en muchas formas, pero ése no afecta qué se almacena realmente. Usted puede también agregar un parámetro boleano de TextOnly solamente a la carga/excepto los subtítulos, no los valores (para una gerencia simple de la lengua)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525:
526:
527:
528:
529:
530:
531:
532:
533:
534:
535:
536:
537:
538:
539:
540:
541:
542:
543:
544:
545:
546:
547:
548:
549:
550:
551:
552:
553:
554:
555:
556:
557:
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568:
569:
570:
571:
572:
573:
574:
575:
576:
577:
578:
579:
580:
581:
582:
583:
584:
585:
586:
587:
588:
589:
590:
591:
592:
593:
594:
595:
596:
597:
598:
599:
600:
601:
602:
603:
604:
605:
606:
607:
608:
609:
610:
611:
612:
613:
614:
615:
616:
617:
618:
619:
620:
621:
622:
623:
624:
625:
626:
627:
628:
629:
630:
631:
632:
633:
634:
635:
636:
637:
638:
639:
640:
641:
642:
643:
644:
645:
646:
647:
648:
649:
650:
651:
652:
653:
654:
655:
656:
657:
658:
659:
660:
661:
662:
663:
664:
665:
666:
667:
668:
669:
670:
671:
672:
673:
674:
675:
676:
677:
678:
679:
680:
681:
682:
683:
684:
685:
686:
687:
688:
689:
690:
691:
692:
unidad IniOptions;

interfaz

Las aplicaciones forman, las clases, IniFiles, StdCtrls, ExtCtrls, botones, rejillas, controles, diálogos, gráficos, ComCtrls, menús, vuelta;

Tipo
 TStringListOption= (slUpperCase);
 TStringListOptions=set de TStringListOption;

procedimiento IniOpenFile (nombre de fichero: String= ''; FilePath: String= ''); sobrecarga;
procedimiento IniOpenFile (caso: Número entero; FilePath: String= ''); sobrecarga;
procedimiento IniCloseFile;

procedimiento IniSaveQuotedCaption (sección, Param, defecto: Secuencia);
función IniLoadQuotedCaption (sección, Param, defecto: Secuencia): Secuencia;

función IniLoadSaveDefaultString (sección, Param, defecto: Secuencia): Secuencia;
función IniLoadSaveDefault (sección, Param, defecto: Secuencia): Secuencia; sobrecarga;
función IniLoadSaveDefault (sección, Param: Secuencia; Defecto: Número entero): Número entero; sobrecarga;
función IniLoadSaveDefault (sección, Param: Secuencia; Defecto: Boleano): Boleano; sobrecarga;
procedimiento IniLoadSaveDefaultStringList (sección, Param: Secuencia; Lista: TStringList; Optar: TStringListOptions= []);

procedimiento IniLoadMenu (M: TMenu);
procedimiento IniSaveMenu (M: TMenu);
procedimiento IniLoadListView (L: TListView);
procedimiento IniSaveListView (L: TListView);
procedimiento IniLoadFormPosAndSize (frm: TCustomForm);
procedimiento IniSaveFormPosAndSize (frm: TCustomForm);
procedimiento IniLoadCheckBox (chk: TCheckBox);
procedimiento IniSaveCheckBox (chk: TCheckBox);
procedimiento IniLoadRadioButton (rb: TRadioButton);
procedimiento IniSaveRadioButton (rb: TRadioButton);
procedimiento IniLoadCaption (lbl: TLabel);
procedimiento IniSaveCaption (lbl: TLabel);
procedimiento IniLoadText (edt: TCustomEdit);
procedimiento IniSaveText (edt: TCustomEdit);
procedimiento IniLoadRadioGroup (rg: TRadioGroup);
procedimiento IniSaveRadioGroup (rg: TRadioGroup);
procedimiento IniLoadGroupBox (GB: TGroupBox);
procedimiento IniSaveGroupBox (GB: TGroupBox);
procedimiento IniLoadComboBox (Cb: TComboBox);
procedimiento IniSaveComboBox (Cb: TComboBox);
{
procedimiento IniLoadSpinEdit (edt: TSpinEdit);
procedimiento IniSaveSpinEdit (edt: TSpinEdit);
}
procedimiento IniLoadButton (BTN: TButton);
procedimiento IniSaveButton (BTN: TButton);
procedimiento IniLoadSpeedButton (BTN: TSpeedButton);
procedimiento IniSaveSpeedButton (BTN: TSpeedButton);
procedimiento IniLoadFormCaption (frm: TForm);
procedimiento IniSaveFormCaption (frm: TForm);
procedimiento IniSavePanel (pnl: TPanel);
procedimiento IniLoadPanel (pnl: TPanel);
procedimiento IniSaveFrame (pnl: Bastidor en T);
procedimiento IniLoadFrame (pnl: Bastidor en T);
procedimiento IniLoadStringGrid (rejilla: TStringGrid);
procedimiento IniSaveStringGrid (rejilla: TStringGrid);
procedimiento IniLoadShape (SHP: TShape);
procedimiento IniLoadImage (img: TImage);
procedimiento IniSaveShape (SHP: TShape);
procedimiento IniSaveImage (img: TImage);
procedimiento IniSaveControl (c: TControl);
procedimiento IniLoadControl (c: TControl);
procedimiento IniLoadOpenDialog (dlg: TOpenDialog);
procedimiento IniSaveOpenDialog (dlg: TOpenDialog);
procedimiento IniLoadMemo (nota: TMemo);
procedimiento IniSaveMemo (nota: TMemo);

procedimiento SetExtendedSection (S: Secuencia);
función  GetExtendedSection: Secuencia;
función  GetTextOnly: Boleano;
procedimiento SetTextOnly (b: Boleano);
función TranslateFormat2Text (S: Secuencia): Secuencia;
función TranslateText2Format (S: Secuencia): Secuencia;

procedimiento IniSaveComponnents (lista: Arsenal de TObject; Ext_Section: String= ''; TextOnly: Boolean=False);
procedimiento IniLoadComponnents (lista: Arsenal de TObject; Ext_Section: String= ''; TextOnly: Boolean=False);

Var
 IniFile: TIniFile;

puesta en práctica

Aplicaciones SysUtils, untUtils, FileCtrl;

Var
 _ExtSection: String= '';
 _TextOnly: Boolean=False;

procedimiento SetExtendedSection (S: Secuencia);
comenzar
 _ExtSection: =S;
extremo;

función  GetExtendedSection: Secuencia;
comenzar
 Resultado: =_ExtSection;
extremo;

función  GetTextOnly: Boleano;
comenzar
 Resultado: =_TextOnly;
extremo;

procedimiento SetTextOnly (b: Boleano);
comenzar
 _TextOnly: =b;
extremo;

función TranslateFormat2Text (S: Secuencia): Secuencia;
comenzar
 Resultado: =StringReplace (S, “% \”, #13#10, [rfReplaceAll]);
extremo;

función TranslateText2Format (S: Secuencia): Secuencia;
comenzar
 Resultado: =StringReplace (S, #13#10, “% \”, [rfReplaceAll]);
extremo;

procedimiento IniOpenFile (caso: Número entero; FilePath: String= '');
comenzar
 IniOpenFile (ChangeFileExt (GetModuleName (hInstance), “.INI "), FilePath);
extremo;

procedimiento IniOpenFile (nombre de fichero: String= ''; FilePath: String= '');
comenzar
 IniCloseFile;
 si nombre de fichero de FileName= '' entonces: =ChangeFileExt (GetModuleName (hInstance), “.INI "); /ChangeFileExt (ParamStr (0), “.INI ");
 si (FilePath<> '') entonces
  comenzar
   FilePath: =IncludeTrailingBackslash (FilePath);
   si nombre de fichero de DirectoryExists (FilePath) entonces: =FilePath+FileName;
  extremo;
 IniFile: =TIniFile.Create (nombre de fichero);
extremo;

procedimiento IniCloseFile;
comenzar
 FreeAndNil (IniFile);
extremo;

función IniLoadSaveDefaultString (sección, Param, defecto: Secuencia): Secuencia;
comenzar
 Resultado: =IniLoadSaveDefault (sección, Param, defecto);
extremo;

procedimiento IniLoadSaveDefaultStringList (sección, Param: Secuencia; Lista: TStringList; Optar: TStringListOptions= []);
Var
 i: número entero;
comenzar
 Sección: =_ExtSection+Section;
 List.CommaText: =IniFile.ReadString (sección, Param, List.CommaText);
 si entonces opta el slUpperCase adentro
  comenzar
   List.Sorted: =False;
   para i: =0 a List.Count-1 enumeran [i]: =UpperCase (lista [i]);
   List.Sorted: =True;
  extremo;
 IniFile.WriteString (sección, Param, List.CommaText);
extremo;

función IniLoadSaveDefault (sección, Param, defecto: Secuencia): Secuencia; sobrecarga;
comenzar
 Sección: =_ExtSection+Section;
 Resultado: =IniFile.ReadString (sección, Param, defecto);
 IniFile.WriteString (sección, Param, resultado);
extremo;

función IniLoadSaveDefault (sección, Param: Secuencia; Defecto: Número entero): Número entero; sobrecarga;
comenzar
 Sección: =_ExtSection+Section;
 Resultado: =IniFile.ReadInteger (sección, Param, defecto);
 IniFile.WriteInteger (sección, Param, resultado);
extremo;

función IniLoadSaveDefault (sección, Param: Secuencia; Defecto: Boleano): Boleano; sobrecarga;
comenzar
 Sección: =_ExtSection+Section;
 Resultado: =IniFile.ReadBool (sección, Param, defecto);
 IniFile.WriteBool (sección, Param, resultado);
extremo;

procedimiento IniSaveQuotedCaption (sección, Param, defecto: Secuencia);
comenzar
 si el defecto del ajuste (defecto<>) entonces omite: =AnsiQuotedStr (defecto, ““");
 IniFile.WriteString (_ExtSection+Section, Param, defecto);
extremo;

función IniLoadQuotedCaption (sección, Param, defecto: Secuencia): Secuencia;
Var
 P: PChar;
comenzar
 Resultado: =IniFile.ReadString (_ExtSection+Section, Param, defecto);
 si (longitud (resultado) >=2) y (resultado [1] = ' “') entonces
  comenzar
   P: =PChar (resultado);
   Resultado: =AnsiExtractQuotedStr (P, ““");
  extremo;
extremo;

procedimiento IniLoadFormPosAndSize (frm: TCustomForm);
Var
 Sección: Secuencia;
comenzar
 Sección: =_ExtSection+frm.Name;
 frm. Subtítulo: =IniFile.ReadString (sección, “SUBTÍTULO”, frm. Subtítulo);
 si no _TextOnly entonces
  comenzar
   si el frm es TForm entonces TForm (frm). Posición: =poDesigned;
   frm. Anchura: =IniFile.ReadInteger (sección, “ANCHURA”, frm. Anchura);
   frm. Altura: =IniFile.ReadInteger (sección, “ALTURA”, frm. Altura);
   frm. Tapa: =IniFile.ReadInteger (sección, “TAPA”, frm. Tapa);
   frm. Izquierda: =IniFile.ReadInteger (la sección, “SE FUE”, frm. Izquierda);
   frm.WindowState: =TWindowState (IniFile.ReadInteger (sección, “ESTADO”, número entero (frm.WindowState)));
  extremo;
extremo;

procedimiento IniSaveFormPosAndSize (frm: TCustomForm);
Var
 Sección: Secuencia;
comenzar
 Sección: =_ExtSection+frm.Name;
 IniFile.WriteString (sección, “SUBTÍTULO”, frm. Subtítulo);
 si no _TextOnly entonces
  comenzar
   IniFile.WriteInteger (sección, “ESTADO”, número entero (frm.WindowState));
   IniFile.WriteInteger (sección, “ANCHURA”, frm. Anchura);
   IniFile.WriteInteger (sección, “ALTURA”, frm. Altura);
   IniFile.WriteInteger (sección, “TAPA”, frm. Tapa);
   IniFile.WriteInteger (la sección, “SE FUE”, frm. Izquierda);
  extremo;
extremo;

procedimiento IniLoadMemo (nota: TMemo);
comenzar
 nota. Texto: =TranslateFormat2Text (IniFile.ReadString (_ExtSection+memo.Name, “TEXTO”, TranslateText2Format (nota. Texto)));
extremo;

procedimiento IniSaveMemo (nota: TMemo);
comenzar
 IniFile.WriteString (_ExtSection+memo.Name, “TEXTO”, TranslateText2Format (nota. Texto));
extremo;

procedimiento IniLoadCheckBox (chk: TCheckBox);
comenzar
 chk. Subtítulo: =IniLoadQuotedCaption (chk. Nombre, “SUBTÍTULO”, chk. Subtítulo);
 si no _TextOnly entonces chk. Comprobado: =IniFile.ReadBool (_ExtSection+chk.Name, “COMPROBÓ”, chk. Comprobado);
extremo;

procedimiento IniSaveCheckBox (chk: TCheckBox);
comenzar
 IniSaveQuotedCaption (chk. Nombre, “SUBTÍTULO”, chk. Subtítulo);
 si no _TextOnly entonces IniFile.WriteBool (_ExtSection+chk.Name, “COMPROBÓ”, chk. Comprobado);
extremo;

procedimiento IniLoadShape (SHP: TShape);
Var
 Sección: Secuencia;
comenzar
 con la SHP hacer
  comenzar
   Sección: =_ExtSection+Name;
   Visible: =IniFile.ReadBool (sección, “VISIBLE”, visible);
   Pen.Color: =StringToColor (IniFile.ReadString (sección, “PEN_COLOR”, ColorToString (Pen.Color)));
   Brush.Color: =StringToColor (IniFile.ReadString (sección, “BRUSH_COLOR”, ColorToString (Brush.Color)));
  extremo;
extremo;

procedimiento IniLoadImage (img: TImage);
Var
 F: Secuencia;
 Sección: Secuencia;
comenzar
 Con el img hacer
  intento
   Sección: =_ExtSection+Name;
   Visible: =IniFile.ReadBool (sección, “VISIBLE”, visible);
   Transparente: =IniFile.ReadBool (sección, “TRANSPARENTE”, transparente);
   Estiramiento: =IniFile.ReadBool (sección, “ESTIRAMIENTO”, estiramiento);
   F: =IniFile.ReadString (sección, “ARCHIVO”, '');
   si FileExists (F) entonces Picture.LoadFromFile (F);
  excepto
  extremo;
extremo;

procedimiento IniSaveShape (SHP: TShape);
Var
 Sección: Secuencia;
comenzar
 con la SHP hacer
  comenzar
   Sección: =_ExtSection+Name;
   IniFile.WriteBool (sección, “VISIBLE”, visible);
   IniFile.WriteString (sección, “PEN_COLOR”, ColorToString (Pen.Color));
   IniFile.WriteString (sección, “BRUSH_COLOR”, ColorToString (Brush.Color));
  extremo;
extremo;

procedimiento IniSaveImage (img: TImage);
Var
 Sección: Secuencia;
comenzar
 Con el img hacer
  comenzar
   Sección: =_ExtSection+Name;
   IniFile.WriteBool (sección, “VISIBLE”, visible);
   IniFile.WriteBool (sección, “TRANSPARENTE”, transparente);
   IniFile.WriteBool (sección, “ESTIRAMIENTO”, estiramiento);
  extremo;
extremo;

procedimiento IniLoadRadioButton (rb: TRadioButton);
comenzar
 rb. Subtítulo: =IniLoadQuotedCaption (rb. Nombre, “SUBTÍTULO”, rb. Subtítulo);
 si no _TextOnly entonces rb. Comprobado: =IniFile.ReadBool (_ExtSection+rb.Name, “COMPROBÓ”, rb. Comprobado);
extremo;

procedimiento IniSaveRadioButton (rb: TRadioButton);
comenzar
 IniSaveQuotedCaption (rb. Nombre, “SUBTÍTULO”, rb. Subtítulo);
 si no _TextOnly entonces IniFile.WriteBool (_ExtSection+rb.Name, “COMPROBÓ”, rb. Comprobado);
extremo;

procedimiento IniLoadText (edt: TCustomEdit);
comenzar
 edt. Texto: =IniLoadQuotedCaption (edt. Nombre, “TEXTO”, edt. Texto);
extremo;

procedimiento IniSaveText (edt: TCustomEdit);
comenzar
 IniSaveQuotedCaption (edt. Nombre, “TEXTO”, edt. Texto);
extremo;

procedimiento IniLoadCaption (lbl: TLabel);
comenzar
 lbl. Subtítulo: =IniLoadQuotedCaption (lbl. Nombre, “SUBTÍTULO”, lbl. Subtítulo);
extremo;

procedimiento IniSaveCaption (lbl: TLabel);
comenzar
 IniSaveQuotedCaption (lbl. Nombre, “SUBTÍTULO”, lbl. Subtítulo);
extremo;

procedimiento IniLoadFormCaption (frm: TForm);
comenzar
 frm. Subtítulo: =IniLoadQuotedCaption (frm. Nombre, “SUBTÍTULO”, frm. Subtítulo);
extremo;

procedimiento IniSaveFormCaption (frm: TForm);
comenzar
 IniSaveQuotedCaption (frm. Nombre, “SUBTÍTULO”, frm. Subtítulo);
extremo;

procedimiento IniLoadButton (BTN: TButton);
comenzar
 BTN. Subtítulo: =IniLoadQuotedCaption (BTN. Nombre, “SUBTÍTULO”, BTN. Subtítulo);
extremo;

procedimiento IniSaveButton (BTN: TButton);
comenzar
 IniSaveQuotedCaption (BTN. Nombre, “SUBTÍTULO”, BTN. Subtítulo);
extremo;

procedimiento IniLoadBitButton (BTN: TBitBtn);
comenzar
 BTN. Subtítulo: =IniLoadQuotedCaption (BTN. Nombre, “SUBTÍTULO”, BTN. Subtítulo);
extremo;

procedimiento IniSaveBitButton (BTN: TBitBtn);
comenzar
 IniSaveQuotedCaption (BTN. Nombre, “SUBTÍTULO”, BTN. Subtítulo);
extremo;

procedimiento IniLoadSpeedButton (BTN: TSpeedButton);
comenzar
 BTN. Subtítulo: =IniLoadQuotedCaption (BTN. Nombre, “SUBTÍTULO”, BTN. Subtítulo);
extremo;

procedimiento IniSaveSpeedButton (BTN: TSpeedButton);
comenzar
 IniSaveQuotedCaption (BTN. Nombre, “SUBTÍTULO”, BTN. Subtítulo);
extremo;

procedimiento IniLoadRadioGroup (rg: TRadioGroup);
comenzar
 rg. Subtítulo: =IniLoadQuotedCaption (rg. Nombre, “SUBTÍTULO”, rg. Subtítulo);
 si no _TextOnly entonces rg.ItemIndex: =IniFile.ReadInteger (_ExtSection+rg.Name, “ÍNDICE”, rg.ItemIndex);
extremo;

procedimiento IniSaveRadioGroup (rg: TRadioGroup);
comenzar
 IniSaveQuotedCaption (rg. Nombre, “SUBTÍTULO”, rg. Subtítulo);
 si no _TextOnly entonces IniFile.WriteInteger (_ExtSection+rg.Name, “ÍNDICE”, rg.ItemIndex);
extremo;

procedimiento IniLoadGroupBox (GB: TGroupBox);
comenzar
 GB. Subtítulo: =IniLoadQuotedCaption (GB. Nombre, “SUBTÍTULO”, GB. Subtítulo);
 si no _TextOnly entonces IniLoadControl (GB);
extremo;

procedimiento IniSaveGroupBox (GB: TGroupBox);
comenzar
 IniSaveQuotedCaption (GB. Nombre, “SUBTÍTULO”, GB. Subtítulo);
 si no _TextOnly entonces IniSaveControl (GB);
extremo;

procedimiento IniLoadComboBox (Cb: TComboBox);
Var
 Str: Secuencia;
comenzar
 Str: =IniLoadQuotedCaption (Cb. Nombre, “TEXTO”, Cb. Texto);
 si Cb. Style=csDropDownList entonces
  comenzar
   si Str<> '' entonces cb.ItemIndex: =cb. Items.IndexOf (Str) cb.ItemIndex otro: =IniFile.ReadInteger (_ExtSection+cb.Name, “ÍNDICE”, cb.ItemIndex);
  Cb otros del extremo. Texto: =Str;
extremo;

procedimiento IniSaveComboBox (Cb: TComboBox);
comenzar
 IniSaveQuotedCaption (Cb. Nombre, “TEXTO”, Cb. Texto);
 IniFile.WriteInteger (_ExtSection+cb.Name, “ÍNDICE”, cb.ItemIndex);
extremo;

{$ifdef USE_SPIN_EDT}
procedimiento IniLoadSpinEdit (edt: TSpinEdit);
comenzar
 edt. Valor: =IniFile.ReadInteger (_ExtSection+edt.Name, “VALOR”, edt. Valor);
extremo;

procedimiento IniSaveSpinEdit (edt: TSpinEdit);
comenzar
 IniFile.WriteInteger (_ExtSection+edt.Name, “VALOR”, edt. Valor);
extremo;
{$endif}

procedimiento IniSavePanel (pnl: TPanel);
comenzar
 IniFile.WriteInteger (_ExtSection+pnl.Name, “ANCHURA”, pnl. Anchura);
 IniFile.WriteInteger (_ExtSection+pnl.Name, “ALTURA”, pnl. Altura);
extremo;

procedimiento IniLoadPanel (pnl: TPanel);
comenzar
 pnl. Anchura: =IniFile.ReadInteger (_ExtSection+pnl.Name, “ANCHURA”, pnl. Anchura);
 pnl. Altura: =IniFile.ReadInteger (_ExtSection+pnl.Name, “ALTURA”, pnl. Altura);
extremo;

procedimiento IniSaveFrame (pnl: Bastidor en T);
comenzar
 IniFile.WriteInteger (_ExtSection+pnl.Name, “ANCHURA”, pnl. Anchura);
 IniFile.WriteInteger (_ExtSection+pnl.Name, “ALTURA”, pnl. Altura);
extremo;

procedimiento IniLoadFrame (pnl: Bastidor en T);
comenzar
 pnl. Anchura: =IniFile.ReadInteger (_ExtSection+pnl.Name, “ANCHURA”, pnl. Anchura);
 pnl. Altura: =IniFile.ReadInteger (_ExtSection+pnl.Name, “ALTURA”, pnl. Altura);
extremo;

procedimiento IniLoadStringGrid (rejilla: TStringGrid);
Var
 i: número entero;
 Sección: Secuencia;
comenzar
 Con rejilla hacer
  comenzar
   Sección: =_ExtSection+Name;
   grid.ColCount: =IniFile.ReadInteger (sección, “COL_COUNT”, grid.ColCount);
   para i: =0 a grid.ColCount-1 hacen
    comenzar
     grid.ColWidths [i]: =IniFile.ReadInteger (sección, formato (“COL_%d_WIDTH”, [i]), grid.ColWidths [i]);
     rejilla. Células [i, 0]: =IniFile.ReadString (sección, formato (“COL_%d_TEXT”, [i]), rejilla. Células [i, 0]);
    extremo;
  extremo;
extremo;

procedimiento IniSaveStringGrid (rejilla: TStringGrid);
Var
 i: número entero;
 Sección: Secuencia;
comenzar
 Con rejilla hacer
  comenzar
   Sección: =_ExtSection+Name;
   IniFile.WriteInteger (sección, “COL_COUNT”, grid.ColCount);
   para i: =0 a grid.ColCount-1 hacen
    comenzar
     IniFile.WriteInteger (sección, formato (“COL_%d_WIDTH”, [i]), grid.ColWidths [i]);
     IniFile.WriteString (sección, formato (“COL_%d_TEXT”, [i]), rejilla. Células [i, 0]);
    extremo;
  extremo;
extremo;

procedimiento IniLoadOpenDialog (dlg: TOpenDialog);
comenzar
 dlg.InitialDir: =IniLoadQuotedCaption (dlg. Nombre, “INITIAL_DIR”, dlg.InitialDir);
extremo;

procedimiento IniSaveOpenDialog (dlg: TOpenDialog);
comenzar
 IniSaveQuotedCaption (dlg. Nombre, “INITIAL_DIR”, dlg.InitialDir);
extremo;

procedimiento IniSaveControl (c: TControl);
comenzar
 IniFile.WriteInteger (_ExtSection+c.Name, “ANCHURA”, c.Width);
 IniFile.WriteInteger (_ExtSection+c.Name, “ALTURA”, c.Height);
extremo;

procedimiento IniLoadControl (c: TControl);
comenzar
 c.Width: =IniFile.ReadInteger (_ExtSection+c.Name, “ANCHURA”, c.Width);
 c.Height: =IniFile.ReadInteger (_ExtSection+c.Name, “ALTURA”, c.Height);
extremo;

procedimiento IniLoadListView (L: TListView);
Var
 Sección: Secuencia;
 i: número entero;
comenzar
 Con L hacer
  comenzar
   Sección: =_ExtSection+Name;
   para i: = 0 a Columns.Count - 1 hace las columnas [i]. Subtítulo: =IniFile.ReadString (sección, formato (“COLUMN_%d”, [i]), columnas [i]. Subtítulo);
  extremo;
extremo;

procedimiento IniSaveListView (L: TListView);
Var
 Sección: Secuencia;
 i: número entero;
comenzar
 Con L hacer
  comenzar
   Sección: =_ExtSection+Name;
   para i: = 0 a Columns.Count - 1 hace IniFile.WriteString (sección, el formato (“COLUMN_%d”, [i]), columnas [i]. Subtítulo);
  extremo;
extremo;

procedimiento IniLoadMenu (M: TMenu);
Var
 Sección: Secuencia;
 i: número entero;

 procedimiento IniLoadMenuItem (M: TMenuItem; Secta: Secuencia);
 Var
  i: número entero;
 comenzar
  Secta: =Sect+'. '+M.Name;
  para i: = 0 a M.Count - 1 hace si M.Items [i]. Caption'-<> 'entonces
   comenzar
    M.Items [i]. Subtítulo: =IniFile.ReadString (secta, M.Items [i]. Nombre, M.Items [i]. Subtítulo);
    si M.Items [i]. Count>0 entonces IniLoadMenuItem (M.Items [i], secta);
   extremo;
 extremo;
comenzar
 Con M hacer
  comenzar
   Sección: =_ExtSection+Name;
   para i: = 0 a M.Items.Count - 1 hace si los artículos [i]. Caption'-<> 'entonces
    comenzar
     Artículos [i]. Subtítulo: =IniFile.ReadString (sección, artículos [i]. Nombre, artículos [i]. Subtítulo);
    extremo;
  extremo;
extremo;

procedimiento IniSaveMenu (M: TMenu);
Var
 Sección: Secuencia;
 i: número entero;
 procedimiento IniSaveMenuItem (M: TMenuItem; Secta: Secuencia);
 Var
  i: número entero;
 comenzar
  Secta: =Sect+'. '+M.Name;
  para i: = 0 a M.Count - 1 hace si M.Items [i]. Caption'-<> 'entonces
   comenzar
    IniFile.WriteString (secta, M.Items [i]. Nombre, M.Items [i]. Subtítulo);
    si M.Items [i]. Count>0 entonces IniSaveMenuItem (M.Items [i], secta);
   extremo;
 extremo;
comenzar
 Con M hacer
  comenzar
   Sección: =_ExtSection+Name;
   para i: = 0 a M.Items.Count - 1 hace si los artículos [i]. Caption'-<> 'entonces
    comenzar
     IniFile.WriteString (sección, artículos [i]. Nombre, artículos [i]. Subtítulo);
     si artículos [i]. Count>0 entonces IniSaveMenuItem (artículos [i], _ExtSection);
    extremo;
  extremo;
extremo;

procedimiento IniSaveComponnents (lista: Arsenal de TObject; Ext_Section: String= ''; TextOnly: Boolean=False);
var
 i: número entero;
 SaveExtSect: Secuencia;
 SaveTextOnly: Boleano;
comenzar
 SaveExtSect: =_ExtSection;
 _ExtSection: =Ext_Section;
 SaveTextOnly: =_TextOnly;
 _TextOnly: =TextOnly;
 para i: El =Low (lista) al colmo (lista) hace si entonces está asignado (lista [i])
  intento
   si la lista [i] es TMemo        entonces IniSaveMemo          (TMemo        (lista [i])) 
   si la lista [i] es TListView    entonces IniSaveListView      (TListView    (lista [i])) 
   si la lista [i] es TMenu        entonces IniSaveMenu          (TMenu        (lista [i])) 
   si la lista [i] es TCustomForm  entonces IniSaveFormPosAndSize (TCustomForm  (lista [i])) 
   si la lista [i] es TRadioGroup  entonces IniSaveRadioGroup    (TRadioGroup  (lista [i])) 
   si la lista [i] es TRadioButton entonces IniSaveRadioButton   (TRadioButton (lista [i])) 
   si la lista [i] es TCustomEdit  entonces IniSaveText          (TCustomEdit  (lista [i])) 
   si la lista [i] es TCheckBox    entonces IniSaveCheckBox      (TCheckBox    (lista [i])) 
   si la lista [i] es TComboBox    entonces IniSaveComboBox      (TComboBox    (lista [i])) 
{$ifdef USE_SPIN_EDT}
   si la lista [i] es TSpinEdit    entonces IniSaveSpinEdit  	(TSpinEdit    (lista [i])) 
{$endif}
   si la lista [i] es TLabel       entonces IniSaveCaption  	(TLabel       (lista [i])) 
   si la lista [i] es TBitBtn      entonces IniSaveBitButton  	(TBitBtn      (lista [i])) 
   si la lista [i] es TButton      entonces IniSaveButton  	(TButton      (lista [i])) 
   si la lista [i] es TSpeedButton entonces IniSaveSpeedButton  	(TSpeedButton (lista [i])) 
   si la lista [i] es TPanel       entonces IniSavePanel 	(TPanel       (lista [i])) 
   si la lista [i] es bastidor en T       entonces IniSaveFrame 	(bastidor en T       (lista [i])) 
   si la lista [i] es TStringGrid  entonces IniSaveStringGrid    (TStringGrid  (lista [i])) 
   si la lista [i] es TOpenDialog  entonces IniSaveOpenDialog    (TOpenDialog  (lista [i])) 
   si la lista [i] es TShape       entonces IniSaveShape         (TShape       (lista [i])) 
   si la lista [i] es TImage       entonces IniSaveImage         (TImage       (lista [i])) 
   si la lista [i] es TGroupBox    entonces IniSaveGroupBox      (TGroupBox    (lista [i])) 
   si la lista [i] es TControl     entonces IniSaveControl       (TControl     (lista [i])) 
   si la lista [i] es TComponent   entonces ShowMessage ('Erreur excepto “+TComponent (lista [i]). Name+”: '+List [i] .ClassName)
    ShowMessage otro ('Erreur ahorra '+List [i] .ClassName);
  excepto
   en E: La excepción hace ShowMessage (formato (“ahorro %s del error: el %s'#13'% s”, [TComponent (lista [i]). Nombre, E.ClassName, E.Message]));
  extremo;
 _ExtSection: =SaveExtSect;
 _TextOnly: =SaveTextOnly;
extremo;

procedimiento IniLoadComponnents (lista: Arsenal de TObject; Ext_Section: String= ''; TextOnly: Boolean=False);
var
 i: número entero;
 SaveExtSect: Secuencia;
 SaveTextOnly: Boleano;
comenzar
 SaveExtSect: =_ExtSection;
 _ExtSection: =Ext_Section;
 SaveTextOnly: =_TextOnly;
 _TextOnly: =TextOnly;
 para i: El =Low (lista) al colmo (lista) hace si entonces está asignado (lista [i])
  intento
   si la lista [i] es TMemo        entonces IniLoadMemo          (TMemo        (lista [i])) 
   si la lista [i] es TListView    entonces IniLoadListView      (TListView    (lista [i])) 
   si la lista [i] es TMenu        entonces IniLoadMenu          (TMenu        (lista [i])) 
   si la lista [i] es TCustomForm  entonces IniLoadFormPosAndSize (TCustomForm  (lista [i])) 
   si la lista [i] es TRadioGroup  entonces IniLoadRadioGroup    (TRadioGroup  (lista [i])) 
   si la lista [i] es TRadioButton entonces IniLoadRadioButton   (TRadioButton (lista [i])) 
   si la lista [i] es TCustomEdit  entonces IniLoadText          (TCustomEdit  (lista [i])) 
   si la lista [i] es TCheckBox    entonces IniLoadCheckBox      (TCheckBox    (lista [i])) 
   si la lista [i] es TComboBox    entonces IniLoadComboBox      (TComboBox    (lista [i])) 
{$ifdef USE_SPIN_EDT}
   si la lista [i] es TSpinEdit    entonces IniLoadSpinEdit  	(TSpinEdit    (lista [i])) 
{$endif}
   si la lista [i] es TLabel       entonces IniLoadCaption  	(TLabel       (lista [i])) 
   si la lista [i] es TBitBtn      entonces IniLoadBitButton  	(TBitBtn      (lista [i])) 
   si la lista [i] es TButton      entonces IniLoadButton  	(TButton      (lista [i])) 
   si la lista [i] es TSpeedButton entonces IniLoadSpeedButton  	(TSpeedButton (lista [i])) 
   si la lista [i] es TPanel       entonces IniLoadPanel 	(TPanel       (lista [i])) 
   si la lista [i] es bastidor en T       entonces IniLoadFrame 	(bastidor en T       (lista [i])) 
   si la lista [i] es TStringGrid  entonces IniLoadStringGrid    (TStringGrid  (lista [i])) 
   si la lista [i] es TOpenDialog  entonces IniLoadOpenDialog    (TOpenDialog  (lista [i])) 
   si la lista [i] es TShape       entonces IniLoadShape         (TShape       (lista [i])) 
   si la lista [i] es TImage       entonces IniLoadImage         (TImage       (lista [i])) 
   si la lista [i] es TGroupBox    entonces IniLoadGroupBox      (TGroupBox    (lista [i])) 
   si la lista [i] es TControl     entonces IniLoadControl       (TControl     (lista [i])) 
   si la lista [i] es TComponent   entonces ShowMessage ('carga “+TComponent (lista [i] de Erreur). Name+”: '+List [i] .ClassName) 
    ShowMessage ('carga '+List [i] .ClassName) de Erreur;
  excepto
   en E: La excepción hace ShowMessage (formato (“cargamento %s del error: el %s'#13'% s”, [TComponent (lista [i]). Nombre, E.ClassName, E.Message]));
  extremo;
 _ExtSection: =SaveExtSect;
 _TextOnly: =SaveTextOnly;
extremo;

inicialización
 IniFile: =nil;
 IniOpenFile;
acabamiento
 IniCloseFile;
extremo.
Otras soluciones  
 
programming4us programming4us