Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-04-2010
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Como crear un control como el de "descargar archivos" de firefox?

Estoy armando la interface visual para BestSeller del sistema de plugins. Al igual que firefox, quiero que el usuario pueda descargarlos desde la web y todo eso.

Ahora bien, la parte de armar controles es la que menos me sale... Supongamos que quiero mostrar:

- Un icono a la der.
- En el centro, un titulo y debajo un subtitulo/descripcion
- Version & author a la izq.

(Similar a https://wiki.mozilla.org/Firefoxownload_Manager)

He pensado en usar un TFrame, porque facil armo la plantilla de como se ve las cosas. Pero como lo vuelvo una lista?, o sea, como le pongo scrollbar y todo eso?

Tambien pense en usar un TListView y con CustonDraw hacerle el maquillaje, pero no veo como y segun lo que he leido seria complicado.

Y porque no uso un componente de terceros? Porque desafortunadamente necesito que la idea funcione en Lazarus
__________________
El malabarista.
Responder Con Cita
  #2  
Antiguo 27-04-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Podrías usar un DBCtrlGrid. Es de bases de datos pero podrías conectarlo a algún dataset en memoria.

Por otro lado, ¿relamente será tan difícil adaptar un ListView?

// Saludos
Responder Con Cita
  #3  
Antiguo 27-04-2010
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
Podrías usar un DBCtrlGrid.
Ese fue mi primer impulso, desafortunadamente no esta disponible en lazarus
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 27-04-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Al parecer hay una versión del Virtual TreeView para Lázarus. ¿La has visto?

// Saludos
Responder Con Cita
  #5  
Antiguo 27-04-2010
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Podrías usar un DBCtrlGrid.
Y por qué no mejor utilizar un DBGrid? está disponible para Lazarus también.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #6  
Antiguo 27-04-2010
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Y como haria ver el dbgrid de esa manera? Con icono, texto formateado y similares?
__________________
El malabarista.
Responder Con Cita
  #7  
Antiguo 28-04-2010
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
CustomDrawing amigo!
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #8  
Antiguo 01-05-2010
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Al final encontre un buen balance entre funcionalidad y facilidad de uso.

Usando un TFrame + TScrollBox. Facil y rapido!. El codigo ppal es asi (el codigo necesito unos fixs pero esta funcional. Para completar, hacer un Frame como lo quieras con aling=AlTop y asi no hay que calcular nada):

Código Delphi [-]
unit formSelectPlugin;
{ Interface para visualizar & descargar plugins para BestSeller
Autor: Mario Montoya
}
interface

uses
  {$ifdef FPC}
  LResources,
  {$else}
  Windows,
  {$endif}
  Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ImgList, StdCtrls, Buttons, ExtCtrls, IniFiles,
  {MotionServer} PluginManager, Funciones;

type
  TfrmDownloadPlugins = class(TForm)
    lbDownload: TLabel;
    barDownload: TProgressBar;
    ListPlugins: TScrollBox;
    Delay: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure DelayTimer(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
    FPluginManager : TPluginManager;
    FPlugins:TStringList;
    procedure HidePanels;
    procedure ShowPanels;
    procedure btnDownloadClick(Sender: TObject);
  public
    { Public declarations }
    SelectedPlugin:String;
  end;

var
  frmDownloadPlugins: TfrmDownloadPlugins;

implementation

uses framePlugin;

{$R *.dfm}

procedure TfrmDownloadPlugins.btnDownloadClick(Sender: TObject);
  i: Integer;
begin
  SelectedPlugin := FPlugins[(Sender as TButton).Tag];
  lbDownload.Caption := 'Downloading/updating ' + SelectedPlugin;
  HidePanels();

  try
    Cursor := crHourGlass;
    try
      FPluginManager.DescargarPlugin( SelectedPlugin );
      Close;
    except on E: Exception do
      begin
        ShowPanels();
        ShowMessage( E.Message );
      end;//except
    end;//try
  finally
    Cursor := crDefault;
  end;//try
end;

procedure TfrmDownloadPlugins.FormActivate(Sender: TObject);
begin
  Delay.Enabled := True;
end;

procedure TfrmDownloadPlugins.FormCreate(Sender: TObject);
begin
  FPluginManager := TPluginManager.Create;
  FPluginManager.Load;

  ShowPanels();
  FPlugins := TStringList.Create;
end;

procedure TfrmDownloadPlugins.FormDestroy(Sender: TObject);
begin
  FPluginManager.Free;
  FPlugins.Free;
end;

procedure TfrmDownloadPlugins.ShowPanels;
begin
  ListPlugins.Visible := False;
end;

procedure TfrmDownloadPlugins.HidePanels;
begin
  ListPlugins.Visible := True;
end;

procedure TfrmDownloadPlugins.DelayTimer(Sender: TObject);
var
  Ini:TMemIniFile;
  item: TfraPlugin;
  Key, name, author:String;
  plugin:TStringList;
  i: Integer;
begin
  Delay.Enabled := False;
  try
    Cursor := crHourGlass;
    try
      Ini := FPluginManager.ListaPluginsOnline();
    except on E: Exception do
      begin
        ShowMessage( E.Message );
        ModalResult := mrCancel;
        Close;
        Exit;
      end;//except
    end;//try
  finally
    Cursor := crDefault;
  end;//try

  Ini.ReadSections(FPlugins);
  FPlugins.Sort;

  for i := 0 to FPlugins.count - 1 do
  begin
    Key := FPlugins[i];
    plugin := Split(Key,'-');
    author :=  plugin[0];
    name :=  plugin[1];
    plugin.Free;

    item := TfraPlugin.Create( ListPlugins );
    item.Name := 'plug'+IntToStr(i);
    ListPlugins.InsertControl( item );
    item.Align := alTop;
    item.lbTitulo.Caption := name;
    item.lbVersion.Caption := Ini.ReadString( Key, 'Version','');

    if FPluginManager.ListaPlugins.IndexOf( Key )>-1 then
    begin
      item.btnDownload.Caption := 'Update';
    end;//if

    item.btnDownload.OnClick := btnDownloadClick;
    item.btnDownload.Tag := i;
  end;//for

  HidePanels;
end;

end.
__________________
El malabarista.
Responder Con Cita
  #9  
Antiguo 17-05-2010
Chewitta Chewitta is offline
Miembro
 
Registrado: jul 2008
Posts: 13
Poder: 0
Chewitta Va por buen camino
Unhappy Seleccionar nietos en TreeView

Hola !!


Tengo este codigo y me funciona solamente con los hijo en un treeview,ya lo que quiero que darle en el padre quitar el check de todos los hijos y nietos...

procedure TFrmSeguridad.TreeView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var node_sel,f:TTreeNode;
p:tpoint;
b:boolean;
begin
getcursorpos(p);
if (TreeView1.GetNodeAt(X, Y) <> nil) then
begin
node_sel:=TreeView1.GetNodeAt(x,y);
b:=TreeView1.GetChecked(node_sel);
f:=node_sel.getFirstChild;
while (f<>nil) do
begin
TreeView1.SetChecked(f,b);
f:=f.GetNextChild(f);
end;
end;
end;



de antemano agreadezco su ayuda...
Responder Con Cita
  #10  
Antiguo 17-05-2010
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola Chewitta...

Si no lo has hecho, te recomiendo que leas la Guía de Estilo de los foros...


Saludos...
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como crear un "Cryptographic Message Syntax" en Delphi? old_martinez Varios 3 09-12-2016 15:41:59
Firebird, Funciona como conexion remota, pero como local "Unavailable Database" JuanErasmo Conexión con bases de datos 7 21-04-2008 15:38:31
Como crear un efecto "Hollywood" como el de Photoshop kapullok_2006 Gráficos 0 22-11-2007 11:43:08
Como hacer que se vea "Si" en vez de "TRUE" en un DBGrid lu9eui C++ Builder 2 07-08-2007 04:03:13


La franja horaria es GMT +2. Ahora son las 06:30:15.


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