Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos


 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 08-08-2016
Avatar de cl2raul
cl2raul cl2raul is offline
Miembro
 
Registrado: sep 2008
Ubicación: La Habana, Cuba
Posts: 88
Poder: 18
cl2raul Va por buen camino
mi aporte

yo habia posteado algo parecido, con el componente OpenDialog q no esta disponible en FMX para android...
Ya habia pedido ayuda acerca de esto y no habia mucho que hacer y decidi hacerme algo parecido a OpenDialog de app de otros...

ya se sabe que en FMX cuando es para Android, los componentes de la paleta Dialog, se desabilitan, lo cual me parece una gran estupides y cabrona de Embarcadero al no poner esta opcion, pero bueno al no haber algun amiguete que me de luz yo se la ofresco, puede que tenga fallitos pero se que podeis mejorarla e incluso alguien la puede hacer componente (no me salen los componentes, jajaja, es tarea pendiente)... sin tanta baba adjunto esta todo, y aqui tambien:
Código Delphi [-]
unit OpenDialog;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  FMX.Layouts, FMX.ListBox,
  System.StrUtils,System.IOUtils;

type
  TForm1 = class(TForm)
    Label1: TLabel;  //para el titulo, alineado Top
    ListBox1: TListBox;  //para mostrar los archivos y directorios y elegirlos, alineado Client
    Layout1: TLayout;  //separador para contener los botones siguientes, alineado Botton
    Button1: TButton;  //este es para ir atras, o sea entramos en un directorio y con este salimos de el hacia el anterior, alineado Left
    Button2: TButton;  //aceptar que encontrastes un fichero y ejecutas lo que quieras, alineado Rigth
    procedure verArchivos(tuDir: String; listado: TStrings);
    function loadDir(listaDir: TStringList):String;
    procedure ListBox1ItemClick(const Sender: TCustomListBox;
      const Item: TListBoxItem);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  //mis variables
  Direccion: TStringList;
  F: TextFile;

implementation

{$R *.fmx}

{ TForm1 }

//esto es para que busque y muestre directorios y los ficheros *.db, si quieres que muestre todo pones *.*
//este codigo es de trucomania
procedure TForm1.verArchivos(tuDir: String; listado: TStrings);
var
  FileSearch: TSearchRec;
  LList: TStringDynArray;
  I: Integer;
  LSearchOption: TSearchOption;
begin
  chDir(tuDir);
  if FindFirst('*.db', faReadOnly + faHidden, FileSearch)=0 then
    repeat
      listado.Add(FileSearch.Name);
    until
      FindNext(FileSearch)<>0;
  FindClose(FileSearch);

  LList:=TDirectory.GetDirectories(tuDir);
  for I:=0 to Length(LList)-1 do
    listado.Add(RightStr(LList[i],Length(LList[i])-Length(tuDir))+'/');
end;

//esta funcion es necesaria y la explicacion esta en el articulo mio de este foro llamado "Dudas con TStringList usando FMX para android"
function TForm1.loadDir(listaDir: TStringList): String;
var
  I: Integer;
begin
  for I:=0 to listaDir.Count-1 do
    begin
      Result:=Result+listaDir[i];
    end;
end;

//este es el boton similar a ir arriba o subir direcctorio o atras de windows
procedure TForm1.Button1Click(Sender: TObject);
begin
  if Label1.Text<>#47 then
    begin
      Direccion.Delete(Direccion.Count-1);
      Label1.Text:=loadDir(Direccion);
      ListBox1.Clear;
      verArchivos(loadDir(Direccion),ListBox1.Items);
      ListBox1.ItemIndex:=-1;
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Direccion:=TStringList.Create;
  Direccion.Add(#47);
  //usar la funcion loadDir es una estupidez aqui pero hacia pruebas y asi la deje
  verArchivos(loadDir(Direccion),ListBox1.Items);
  Label1.Text:=#47;
end;

//iportante esta, ya que si usamos onClick del ListBox1, es un desastre por lo que les recomiendo ItemClick 
procedure TForm1.ListBox1ItemClick(const Sender: TCustomListBox;
  const Item: TListBoxItem);
var
  g:string;
begin
  if (ListBox1.Selected.Text<>'') then
    begin
      g:=ListBox1.Selected.Text;
      Direccion.Add(g);
      ListBox1.Clear;
      Label1.Text:=loadDir(Direccion);
      if (RightStr(g,1)='/') then
        begin
          verArchivos(loadDir(Direccion),ListBox1.Items);
          ListBox1.ItemIndex:=-1;
        end;
    end;
end;

end.

Me gustaria que la mejoraran para que tenga uso general en una Unit o sea adicional la unit y ya esta a trabajar o mejor hacer un componente que nos quite el peso de diseñar como va a quedar la Caja de Dialogo, espero que asi sea, gracias a todos los lectores.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Microsoft Band: la pulsera inteligente compatible con Android y iOS nlsgarcia La Taberna 0 01-11-2014 18:57:30
Hardware compatible basti Linux 3 20-03-2007 16:07:13
BDE es compatible con sql express? Alexandercash Conexión con bases de datos 4 08-01-2007 21:45:48
delphi compatible con linux arkangel Varios 2 17-11-2005 03:27:24
Qreport no compatible con access Sasuke_Cub Impresión 1 19-06-2005 18:17:19


La franja horaria es GMT +2. Ahora son las 21:22:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi