Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-06-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
No me queda claro.

"Dibujar" es poner una imagen encima de otra, tan simple como hacer un cuadrado en paint, con dimensiones 16x16 pixeles y pintarlo en el canvas de tu thumbnail. Cuando el usuario entre con el ratón en esa zona concreta (lo identificas por las coordenadas x e y del evento mousemove del thumbnail) y hace clic, entonces, coges otra imagen preparada (con la marca de verificación) y la dibujas sobre la anterior.

Veo algunos detalles:
- El checkbox tapa parte de la imagen.
- El usuario no ve el checkbox porque la imagen de fondo es del mismo color que el checkbox
- Tienes que programarlo todo, incluso saber si el usuario marcó o desmarcó la casilla.

"Crear en ejecución" es totalmente distinto, el resultado es idéntico a ponerlo en tiempo de diseño, tienes el control que se llama checkbox1 y todos sus eventos y propiedades.

Si tienes en una carpeta imágenes y usas la opción de windows de imprimir imágenes, verás que tienen un checkbox también, pero fuera de la imagen, así queda a la vista del usuario. Fácil de programar y elegante (al menos para mi gusto ).

Si lo que quieres es "dibujar", yo no he trabajado mucho con ello, pero seguro que otros te dan algún apunte.

Si tienes aún mi programilla de calendario, elimina el memo, pon tu jvThumbail y el checbox debajo; creo no tendrás ningún error...ni de compilación siquiera .

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #2  
Antiguo 14-06-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 21
MaMu Va por buen camino
Cita:
Empezado por Lepe
Si tienes en una carpeta imágenes y usas la opción de windows de imprimir imágenes, verás que tienen un checkbox también, pero fuera de la imagen, así queda a la vista del usuario. Fácil de programar y elegante (al menos para mi gusto ).
Vos sabes que yo diseñe el frame para que el checkbox no me tape la imagen en lo mas minimo, esta la cargo con la propiedad FileName, que viene en el ThumbNails, de hecho ha quedado muy bonito. Pero lo unico que me resta es saber cuando esta checada o no. Ahora bien, como es eso de la opcion de windows, realmente no lo entendi. Yo las imagenes las tomo de un directorio.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #3  
Antiguo 14-06-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Ya veo que hemos contestado al mismo tiempo .

el código te quedaría así:
Código Delphi [-]
unit celda;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TFrCelda = class(TFrame)
    pnl1: TPanel;
    pnl2: TPanel;
    CheckBox1: TCheckBox;
   //aqui tendrás más cosas.

  private
    procedure SetSelected(const Value: Boolean);
    function GetSelected: Boolean;
    { Private declarations }
  public
    { Public declarations }
    property Selected:Boolean read GetSelected write SetSelected;
  end;

implementation

{$R *.dfm}

{ TFrCelda }

function TFrCelda.GetSelected: Boolean;
begin
  Result := checkbox1.Checked;
end;


procedure TFrCelda.SetSelected(const Value: Boolean);
begin
  Checkbox1.Checked := Value;
end;
Ahora solo tienes que preguntar por Selected, en lugar de por el Checkbox.Checked, así que tu código sería más o menos:
Código Delphi [-]
// var thumb:TFrameThumb; no hace falta esta linea 
begin
 for i:=componentcount downto 1 do  //sin tomar el cero, porque no tengo component.name como cero
  begin
    if component[i] is TFrameThumb
      then begin
         if TFrameThumb(component[i]).Selected = true
           then CargoEnMiTString;
      end;
  end; 
end;

Si por código necesitas activar el checkbox, puedes usar esto:
Código Delphi [-]
// var thumb:TFrameThumb; no hace falta esta linea 
begin
 for i:=componentcount downto 1 do  //sin tomar el cero, porque no tengo component.name como cero
  begin
    if component[i] is TFrameThumb
      then begin
        TFrameThumb(component[i]).Selected := true
      end;
  end; 
end;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 14-06-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 21
MaMu Va por buen camino
Cita:
Empezado por Lepe
Ya veo que hemos contestado al mismo tiempo .
JajJAjajAJ amigo Lepe, me estas mandando lo mismo que estaba haciendo, me die cuenta cuando revisando tu ejemplo, en el FrCelda estaba la funcion para setear la fecha. Toda la telepatia!!!

Ahora eso que me decis de la impresion de windows, es exactamente lo que quiero hacer, pero veo que la unica forma es como lo estamos haciendo... o hay otra pero ya es con el uso de un componente de pago???

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #5  
Antiguo 14-06-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 21
MaMu Va por buen camino
Tengo un problema, yo creo los frames (TThumb) en run-time, y los libero cuando ya no los necesito, como para poder volver a cargarlos cuando yo quiera. Es que, hice dos formas de vista, una por filas en un ListView y el otro este Thumbnails. El procedimiento que uso es el siguiente:

Código Delphi [-]
procedure TMain.PageControl2Change(Sender: TObject);
var g,TheTop,Cant,h,j:integer;
    Thumb:TThumb;
begin
  if PageControl2.TabIndex=0
    then begin
     for j := Main.componentcount - 1 downto 0 do
        begin
       //solo la puse para ver si la clase TThumb aparecia, pero no aparece nunca    
       //   showmessage(Main.components[j].ClassName);      
         if Main.components[j] is TThumb
          then begin
          Main.components[j].Free;
          end;
        end;
    end;
  if PageControl2.TabIndex=1
    then begin
      TheTop:=0;
      h:=0; //horizontal
      Cant:=Lista.Count;
   try
      for g:=0 to Cant-1 do
        begin
          Thumb:=TThumb.Create(Main.JvThumbView1);
          Thumb.Name:='Thumb'+IntToStr(g);
          Thumb.Panel1.Caption:='# '+IntToStr(g+1);
          Thumb.dxCheckbox1.Checked:=False;
          Thumb.JvThumbnail1.FileName:=Lista.Strings[g];
          Thumb.JvThumbnail1.Title:=Resolucion(Lista.Strings[g]);
          Thumb.Left:=((h+1)-1) * Thumb.Width;
          if Thumb.Left=720
            then begin
                  TheTop:=TheTop+Thumb.Height;
                  Thumb.Left:=0;
                  h:=0;
                 end;
          Thumb.Top:=TheTop;
          Thumb.Parent:=Main.JvThumbView1;
          h:=h+1;
        end;
    finally
      Thumb.Free;
      Thumb:=nil;
      end;
    end;
end;

Mi unico problema, es que no se como liberar los Thumbs creados, ya que me salta "component Thumb0 already exists".
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #6  
Antiguo 14-06-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Usa un TObjectList, es lo más cómodo.
Declara en la ventana el TObjectList;
Código Delphi [-]
uses contnrs;

Form1 = class(TForm);
....

private
   Lista: TObjectList;


Cuando necesites destruir todos los Thumb:
Código Delphi [-]
  FreeAndNil(Lista); // no importa que lo llames varias veces
// no obtendrás Violaciones de acceso a memoria ni nada.

Cuando necesites crear un Thumb:
Código Delphi [-]
if not Assigned(Lista) then
  Lista := TObjectList.Create(True);
Lista.Add(Thumb) ; // este es el Thumbnail que acabas de crear
// lo añadimos a la lista.

Mira la ayuda de TObjectlist o busca por el foro.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 14-06-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 21
MaMu Va por buen camino
Lo que pasa es que la Lista, ya viene cargada de otro lado, y no me da ningun problema, en la lista solo estan cargado PATHs de imagenes de un directorio.
El problema lo tengo a la hora de liberar el componente TThumb creado, cuando ya no lo necesito, ya que si, vuelvo a crearlo sin liberarlo me salta error de que ya esta creado.

Es esta parte:

Código Delphi [-]
 for j := Main.componentcount - 1 downto 0 do
        begin
        //lo puse para ver si aparecia TThumb, pero no aparece nunca
        // showmessage(Main.components[j].ClassName);
         if Main.components[j] is TThumb
          then begin
          Main.components[j].Free;
          end;

No se como liberarlo.
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #8  
Antiguo 14-06-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 21
MaMu Va por buen camino
Ya lo solucione, no me daba cuenta que contaba los componentes en otro lado, y debia hacerlo en el lugar donde los estaba creando:

Código Delphi [-]
Main.JvThumbView1.Componetscount

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
Respuesta


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
Diseño e implementación de Thumbnails MaMu Gráficos 4 18-04-2007 20:25:37
Componente para gráficos Besto Gráficos 1 11-10-2006 20:53:23
Componente para Filtrar ADO, Para D5 olbeup OOP 5 14-09-2005 17:40:01
componente para norma19 para delphi7 raulmm26 Varios 3 07-02-2005 12:31:11
Como puedo ver imagenes en Thumbnails? marcoev Gráficos 1 29-05-2003 21:06:36


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


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