Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-08-2007
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Arrow TMS Eventos por código

Hola,
El hilo lo puse aquí por la forma gráfica de crear la barra.
Para que se me entienda mi pregunta he creado un código pequeño que trabaja con una BD hecha en Acces muy pequeña y que ambos han de trabajar con el componente de TMS (Barra: OutLookBar)
Código Delphi [-]
implementation
uses Formulario2;

type
  UnArray = array[0..10] of string;
var
  x:integer;
  A:UnArray;
  NuevoBar:TInspectorBar;
const
  sqlSubGrupo1 = ' select DISTINCT SubGrupo from Elementos where Tipo = "Metal"';
  sqlSubGrupo2 = ' select DISTINCT SubGrupo from Elementos where Tipo = "No Metal"';
{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  i,j:  integer;
begin
  x:=0;
  ADOQuery1.Active:= False;
  ADOQuery1.Sql.text:= sqlSubGrupo1;
  ADOQuery1.Active:= True;

  with ADOQuery1 do
   begin
     first;
     while not eof do
       begin
          A[x]:= FieldByName('SubGrupo').Value;
          inc(x);
          next;
       end;
   end;

  NuevoBar := TInspectorBar.Create(Form2);
  NuevoBar.Parent := Form2;
  NuevoBar.Align:= alLeft;

  for i:= 0 to x-1 do
    begin
      with NuevoBar.Panels.Add do
        begin
          NuevoBar.Panels[i].Caption:=A[i];
          ItemHeight:= 20;
          Style:= psSmallIcon;
          Alignment:= taLeftJustify;
          HoverCaption:= True;

          ADOQuery1.Active:= False;
          ADOQuery1.Sql.text := ' select Nombre from Elementos where SubGrupo = "'+ A[i]+'"';
          ADOQuery1.Active:= True;
          ADOQuery1.First;
          for j := 0 to ADOQuery1.RecordCount - 1 do
            begin
               with Items.Add do
                  NuevoBar.Panels[i].Items[j].Caption:=ADOQuery1.Fields[0].Value;
               ADOQuery1.Next;
            end;
        end;
      NuevoBar.TopPanel:= NuevoBar.Panels.Count;
    end;
    NuevoBar.Style:= esOffice2003Blue;
    Form2.Show;
    NuevoBar.OnItemClick:=MiProc1;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var
  i,j:  integer;
begin
  Form2.Show;
  x:=0;
  ADOQuery1.Active:= False;
  ADOQuery1.Sql.text:= sqlSubGrupo2;
  ADOQuery1.Active:= True;

  with ADOQuery1 do
   begin
     first;
     while not eof do
       begin
          A[x]:= FieldByName('SubGrupo').Value;
          inc(x);
          next;
       end;
   end;

  NuevoBar := TInspectorBar.Create(Form2);
  NuevoBar.Parent := Form2;
  NuevoBar.Align:= alLeft;

  for i:= 0 to x-1 do
    begin
      with NuevoBar.Panels.Add do
        begin
          NuevoBar.Panels[i].Caption:=A[i];
          ItemHeight:= 20;
          Style:= psSmallIcon;
          Alignment:= taLeftJustify;
          HoverCaption:= True;

    ADOQuery1.Active:= False;
          ADOQuery1.Sql.text := ' select Nombre from Elementos where SubGrupo = "'+ A[i]+'"';
          ADOQuery1.Active:= True;
          ADOQuery1.First;
          for j := 0 to ADOQuery1.RecordCount - 1 do
            begin
               with Items.Add do
                  NuevoBar.Panels[i].Items[j].Caption:=ADOQuery1.Fields[0].Value;
               ADOQuery1.Next;
            end;
        end;
      NuevoBar.TopPanel:= NuevoBar.Panels.Count;
    end;
    NuevoBar.Style:= esOffice2003Blue;
    Form2.Show;
    NuevoBar.OnItemClick:=MiProc2;
end;

procedure TForm1.MiProc1(Sender: TObject; AInspectorPanel: TInspectorPanel; AInspectorItem: TInspectorItem);
begin
  if AInspectorPanel.Index = 0 then
    begin
      case AInspectorItem.Index of
        0: ShowMessage(NuevoBar.Panels[0].Items[0].Caption);
        1: ShowMessage(NuevoBar.Panels[0].Items[1].Caption);
        2: ShowMessage(NuevoBar.Panels[0].Items[2].Caption);
      end;
    end;
end;
end.
La pregunta está en el procedure:
Código Delphi [-]
procedure TForm1.MiProc1
Al menos mi persona no conoce otra forma del TMS de crearle el Evento como se ve ahí, bueno lo que está escrito dentro funciona, pero la pregunta se basa en mi código que tiene 2 botones donde cada uno crea el Objeto TMS (Barra OutLook) en tiempo de ejecución con distintos Items (también podía haber sido con distintos Paneles, lo simplifiqué) que capturan de mi BD hecha en Access con 2 consultas diferentes para cada botón, la situación es que como se ve esta Procedure:

El código por dentro es Fijo en CASE, es decir, si supiera la cantidad exacta de los Items, no habría problema en colocarle el NÚMERO de CASOS, pero lo cierto es que si se dan cuenta y prueban el código, se crean DIFERENTES ÍTEMS según se clicke el botón de 'Metales' o 'No Metales'.

¿Cómo encarar esta parte de los Eventos (Case) de la Barra OutLook de TMS para cualquier x-cantidad de Ítemes?
¿Alguna otra sugerencia?


Mas tarde intentaré adjuntarles el archivo con código

Última edición por Deiv fecha: 02-08-2007 a las 23:38:51. Razón: Corrijo código delphi
Responder Con Cita
  #2  
Antiguo 02-08-2007
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Cool

Aquí
Adjunto la aplicación de ejemplo pero solo funcionará si tienen instalado el Componente TMS.
Solo pedirles si no hay posibilidades de realizar esto, comentarme please?

Última edición por Deiv fecha: 18-12-2007 a las 15:19:18.
Responder Con Cita
  #3  
Antiguo 28-08-2007
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Question

Al parecer, no tengo respuesta sobre mi caso .

Hablando del Software TMS me preguntaba lo siguiente (y esto va para los que utilizan este Componente):
Ingresando a su Página principal, encuentras una serie de componentes variados verdad?, que si eliges uno de ellos te muestra para descargar en diferentes versiones de Delphi, Yo por intentar así lo hice con uno de ellos, y lo instalé en mi Delphi, de funcionar, funciona!.

La pregunta es, si bien estos componentes son Shareware, ¿Cómo es que me doy cuenta de ello?, es decir no me sale ningún mensaje de error, ni advertencia, ni nada por el estilo, ¿Cómo es que me doy cuenta que es de prueba?. Alguien utilizando estos componentes de TMS (de prueba) pudo observar algún tiempo limitado? o un posterior truncamiento. Pues en algunos componentes Share (OTROS) cuando los instalas existe una propiedad que dice: "Version" y ahí te muestra que es "Trial", pero en TMS no sé como detectar eso y que hace si es de prueba, deja de funcionar luego?
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
Eventos en DLL ziqabo API de Windows 1 11-06-2007 20:04:21
Eventos Walcasar OOP 2 26-10-2006 15:42:40
contraer por codigo, cxGrid (+) los nodos abiertos cerrarlos por codigo sakuragi OOP 6 27-07-2005 18:23:07
Asignar eventos por código roman HTML, Javascript y otros 3 12-06-2005 03:58:02
Eventos xerkan Firebird e Interbase 5 13-10-2003 17:21:18


La franja horaria es GMT +2. Ahora son las 12:58:59.


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