Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-11-2005
bustio bustio is offline
Miembro
 
Registrado: oct 2003
Posts: 231
Poder: 21
bustio Va por buen camino
Como crear un submenu tipo Reopen?

Hola a todos:

Estoy creando una aplicacion que trabaja con varios ficheros, y necesito crear un submenu tipo Reopen.

Para ello pense en almacenar los ficheros abiertos en un Fichero Text; y dije esto:
Código Delphi [-]
var
   OpenedFiles: TextFile;

pero no se trabajar con ficheros texto....

y yna vez que haya hecho eso.. como hago para insertar en mi MainMenu el nuevo submenu con todas las de la ley??
__________________
Muchas Gracias...
Responder Con Cita
  #2  
Antiguo 15-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No sé hasta qué punto sacarás algo en claro (advierto desde ya que tiene algunos problemas) de lo siguiente:

Código Delphi [-]
 unit UDocsRecientes; 
  
 interface 
  
 uses 
   // Delphi 7 
   // 
   Classes, Dialogs, 
   Registry, SysUtils; 
  
 // Sencilla clase para mantener bajo cierto 
 // control a los "documentos recientes". 
 // 
 type 
   TDocsRecientes = class(TObject) 
     private 
       FMaxDocs: integer; 
       FDocsRecientes: TStringList; 
     public 
       constructor Create; 
       destructor Destroy; override; 
       procedure Anadir(rutaDoc: string); 
       procedure Borrar(rutaDoc: string); 
       procedure Guardar(rootReg: Cardinal; claveReg: string); 
       procedure Recuperar(rootReg: Cardinal; claveReg: string); 
     published 
       property DocsRecientes: TStringList read FDocsRecientes; 
       property MaxDocs: integer read FMaxDocs write FMaxDocs default 10; 
   end; 
  
 implementation 
  
 // Recursos/cadenas 
 // 
 resourcestring 
   rsDocReciente = 'DocReciente%d'; 
  
 // Creamos e inicializamos. 
 // 
 constructor TDocsRecientes.Create; 
 begin 
   inherited Create; 
   FMaxDocs := 10; 
   FDocsRecientes := TStringList.Create; 
 end; 
  
 // Liberamos y destruimos. 
 // 
 destructor TDocsRecientes.Destroy; 
 begin 
   FDocsRecientes.Free; 
   inherited Destroy; 
 end; 
  
 // Añadir la ruta de un archivo. 
 // 
 procedure TDocsRecientes.Anadir(rutaDoc: string); 
 var 
   i: integer; 
 begin 
   if not FileExists(rutaDoc) then Exit; 
   i := fDocsRecientes.IndexOf(rutaDoc); 
   if i <> -1 then 
   begin 
     if i > 0 then 
       FDocsRecientes.Move(i, 0); 
     FDocsRecientes[0] := rutaDoc; 
   end 
   else 
     FDocsRecientes.Insert(0, rutaDoc); 
 end; 
  
 // Borrar la ruta de un archivo. 
 // 
 procedure TDocsRecientes.Borrar(rutaDoc: string); 
 var 
   i: integer; 
 begin 
   i := FDocsRecientes.IndexOf(rutaDoc); 
   if i <> -1 then FDocsRecientes.Delete(i); 
 end; 
  
 // Guardar las rutas de los documentos recientes. 
 // 
 procedure TDocsRecientes.Guardar(rootReg: Cardinal; claveReg: string); 
 var 
   i: integer; 
   reg: TRegistry; 
 begin 
   reg := TRegistry.Create; 
   try 
     with reg do begin 
       RootKey := rootReg; 
       if KeyExists(claveReg) then 
         DeleteKey(claveReg); 
       OpenKey(claveReg, true); 
         for i := 0 to FDocsRecientes.Count-1 do 
         begin 
           if FileExists(FDocsRecientes[i]) then 
             WriteString(Format(rsDocReciente, 
               [i]), FDocsRecientes[i]); 
         end; 
       CloseKey; 
     end; 
   finally 
     reg.Free; 
   end; 
 end; 
  
 // Recuperar las rutas de los documentos recientes. 
 // 
 procedure TDocsRecientes.Recuperar(rootReg: Cardinal; 
   claveReg: string); 
 var 
   i: integer; 
   reg: TRegistry; 
 begin 
   FDocsRecientes.Clear; 
   reg := TRegistry.Create; 
   try 
     with reg do begin 
       RootKey := rootReg; 
       OpenKey(claveReg, false); 
       for i := 0 to fMaxDocs-1 do begin 
         if ValueExists(Format(rsDocReciente, [i])) then begin 
           if FileExists(ReadString(Format(rsDocReciente, [i]))) then 
             FDocsRecientes.Add(ReadString(Format(rsDocReciente, [i]))); 
         end; 
       end; 
       CloseKey; 
     end; 
   finally 
     reg.Free; 
   end; 
 end; 
  
 end.
Cabe decir que, naturalmente, puedes complicar/mejorar el código lo que quieras, pero, yo espero haberte dado alguna idea, humildemente.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:07:36.


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
Copyright 1996-2007 Club Delphi