Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-02-2008
Antonioveneroso Antonioveneroso is offline
Miembro
 
Registrado: feb 2008
Posts: 30
Poder: 0
Antonioveneroso Va por buen camino
Pasar Componentes como parámetros

Disculpen de nuevo las molestias.
Estoy haciendo una aplicación en donde, en algunas ventanas, debo repetir información.
Por ejemplo, tengo la ventana de productos, donde se listan (en un Combobox)
todos los productos. En la ventana de "Campos de Licencia" también se llena un Combobox
con los productos. Mi pregunta es: ¿se puede enviar como parámetro un ComboBox?
¿Y cómo se haría? Así, sólo tendría que llamar a la función "x" cada vez que quiero llenar
un Combobox, y pasar como parámetro el Combobox que quiero sea llenado.
Desde ya, muchas gracias por cualquier ayuda que me puedan brindar.
Saludos!
Responder Con Cita
  #2  
Antiguo 20-02-2008
Avatar de axesys
axesys axesys is offline
Miembro
 
Registrado: ene 2007
Ubicación: Los Mochis Sinaloa
Posts: 208
Poder: 18
axesys Va por buen camino
Puede ser algo así
Código Delphi [-]
////////////////////////////////////////////////////////////////////////////////
//
// Función: Llenarcombo
// Descripción: Llena un combo con una sentencia SQL
// Parámetros: cmbCombo - Combo que se desea llenar
//             sSentencia - Sentencia SQL para llenar el combo
// Regresa: boolean - Verdadero si se pudo llenar el combo, falso si hubo error
// Autor: Bismarck Sierra.
// Fecha: 2005-11-22
// Comentarios: La sentencia SQL debe regresar 2 campos, el primero lo que se
//              quiere que aparezca en el combo, el segundo la clave para
//              identificar cada valor en el combo
//
////////////////////////////////////////////////////////////////////////////////
function TUtilerias.LlenarCombo(var cmbCombo: TComboBox; sSentencia: String; bSeleccionar: boolean = true; sPrimeraLinea: String = ''): boolean;
var
  qryConsulta: TSQL;
begin
  Result:= true;
  qryConsulta:= Sistema.BaseDato.CrearConsulta(sSentencia);
  cmbCombo.Items.BeginUpdate;
  cmbCombo.Clear;
  if(sPrimeraLinea <> EmptyStr) then
    cmbCombo.Items.Add(sPrimeraLinea);

  with qryConsulta do
    if(Activo) then
    begin
      while(not EsFinArchivo) do
      begin
        cmbCombo.Items.AddObject(qryConsulta.CampoCadena(0), TObject(qryConsulta.CampoEntero(1)));
        Siguiente;
      end;
      cmbCombo.Items.EndUpdate;
      if(bSeleccionar) then
        cmbCombo.ItemIndex:= 0
      else
        cmbCombo.ItemIndex:= -1;
    end
    else
      Result:= false;
end;

Última edición por axesys fecha: 20-02-2008 a las 00:11:26.
Responder Con Cita
  #3  
Antiguo 20-02-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Si. Puedes pasar como parámeto un ComboBox en una función C++.


En C++ sería así:
Código:
// Implementación de la función que recibe un TComboBox
Funcion(TComboBox* Combo){
  // Aqui utilizas tu Combo con lo que quieras hacer
 . 
 .
 .
}

//Llamada 
// tienes un ComboBox que quieres pasar: ComboMio
Funcion(ComboMio);
Y.. ya está.

Saludos.
Responder Con Cita
  #4  
Antiguo 20-02-2008
Antonioveneroso Antonioveneroso is offline
Miembro
 
Registrado: feb 2008
Posts: 30
Poder: 0
Antonioveneroso Va por buen camino
Escafandra, me funcionó perfectamente tu ejemplo, muchísimas gracias.
No me salía porque yo utilizaba TComponent como parámetro.
axesys, tu código se ve interesante. No lo entiendo muy bien porque soy nuevo
en la programación de C++. Lo guardo para revisarlo luego, tal vez más adelante
me funcione.
Gracias a todos por su ayuda.

Edito:
axesys, ¿Es una función para llenar un combobox con una sentencia cualquiera?
Responder Con Cita
  #5  
Antiguo 20-02-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Claro, si utilizas TComponent, estas pasando un puntero a la clase base.
Te puede funcionar si luego haces un casting a TComboBox. Pasar la clase base te permite pasar cualquier componente, pero luego tienes que identificarlo con el casting correcto. Se puede hacer. Pero si no vas a pasar nada mas que un TComboBox es mejor pasar ese tipo como parámetro.


Saludos.
Responder Con Cita
  #6  
Antiguo 26-02-2008
ucanneo ucanneo is offline
Miembro
 
Registrado: feb 2008
Posts: 30
Poder: 0
ucanneo Va por buen camino
Cita:
Empezado por Antonioveneroso Ver Mensaje
axesys, ¿Es una función para llenar un combobox con una sentencia cualquiera?
Disculpas por contestar

Pues tecnicamente si
Código:
void llenarComboBox (TComboBox* Combo)
{ 
    Combo->Items->Add("itemCualquiera");
    /*
      Ahora que tambien puedes cargarlo con algo que tengas
      guardado en algun sitio, como opciones predeterminadas

       Combo->Items->LoadFromFile( 
          ExtractFilePath(Application->Exename) + "carpeta\\lista.txt"                       
              );
       
   
  */
}
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
Pasar matriz como parámetros bosterito Varios 1 26-11-2006 03:42:40
Cómo pasar los parámetros? dunia_lv Impresión 0 15-04-2005 16:26:42
Como pasar parametros en la llamada de mi ejecutable? Javi2 Varios 4 14-07-2004 16:28:35
como pasar parametros... hook SQL 13 11-05-2004 19:24:14
Alguien sabe cómo pasar parámetros a una plantilla Word?? Muten Servers 2 01-04-2004 00:07:43


La franja horaria es GMT +2. Ahora son las 23:06:00.


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