• Jueves 15 de Mayo de 2025, 00:41

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - _Viktor

Páginas: 1 ... 5 6 [7] 8 9 ... 11
151
C++ Builder / Re: Como Agregar Al Menu Contextual
« en: Jueves 22 de Enero de 2004, 22:22 »
Yo tambien estoy en eso, pero lamentablemente no he encontrado nada todavia, si llego a dar con alguna solucion te la hare saber ;)

Saludos!

152
C++ Builder / Re: Me Aparece Un Error Y No Puedo Compilar
« en: Jueves 22 de Enero de 2004, 22:21 »
Hola, prueba eliminando los archivos temporales de tu proyecto, es decir los de extension tds,obj y los ~*, para eso tienes que tener tu proyecto cerrado.  De seguir con el problema prueba renombrando el Proyecto, guardandolo en otro directorio, ojo que tambien tienes que hacer un Save As de todas las unidades que tengas ya que si solo renombras el proyecto las unidades quedaran en su ubicacion original.

Saludos!

153
C++ Builder / Re: Como Crear Programas Ocultos
« en: Miércoles 21 de Enero de 2004, 22:23 »
La verdad eso no lo he probado nunca en BCB1, pero en teoria deberia funcionar...

Dime tienes el instalador del BCB1, y si puedes decirme cuanto pesa en MB, me interesaria tenerlo como reliquia ;)

Bueno eso, si tienes problemas vere si puedo arreglarlo...

Saludos!

154
C++ Builder / Re: Como Crear Programas Ocultos
« en: Miércoles 21 de Enero de 2004, 22:03 »
Hola de nuevo... aqui te dejo el codigo necesario que tienes que agregar al Proyect1.cpp (al fuente principal de tu proyecto):

Código: Text
  1. WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
  2. {
  3.     try
  4.     {
  5.         Application->Initialize();
  6.         Application->CreateForm(__classid(TForm1), &Form1);
  7.  
  8.         //Agrega estas dos lineas en esta misma posicion.
  9.         Application->ShowMainForm = false;
  10.         ShowWindow(Application->Handle, SW_HIDE);
  11.  
  12.         Application->Run();
  13.     }
  14.     catch (Exception &exception)
  15.     {
  16.         Application->ShowException(&exception);
  17.     }
  18.     return 0;
  19. }
  20.  

Ahora si tambien quieres ocultarlo para que no aparesca en el Administrador de tareas (Ctrl + Alt + Supr) tienes dos posibilidades:

1.- Ocultarlo usando un truco:

Código: Text
  1. WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
  2. {
  3.     try
  4.     {
  5.          Application->Title = ""; //Esta linea lo hace
  6.          Application->Initialize();
  7.          Application->CreateForm(__classid(TForm1), &Form1);
  8.          Application->Run();
  9.     }
  10.     catch (Exception &exception)
  11.     {
  12.          Application->ShowException(&exception);
  13.     }
  14.     return 0;
  15. }
  16.  
2.- O Registrando tu aplicacion como un servicio, que seria lo correcto, para eso tienes que modificar el .h y .cpp de tu formulario principal:

Código: Text
  1. //------------Archivo Cabecera .h ------------------------------
  2. typedef DWORD (__stdcall *pRegFunction)(DWORD, DWORD);
  3.  
  4. class TForm1 : public TForm
  5. {
  6. __published:
  7.     TButton *Button1;
  8. private:
  9.     HINSTANCE hKernelLib;
  10.     pRegFunction RegisterServiceProcess;
  11. public:
  12.     __fastcall TForm1(TComponent* Owner);
  13.     __fastcall ~TForm1();
  14. };
  15.  
  16.  
  17. //-----------Archivo fuente .cpp------------------------------
  18. #include "Unit1.h"
  19.  
  20. #define RSP_SIMPLE_SERVICE     1
  21. #define RSP_UNREGISTER_SERVICE 0
  22.  
  23. __fastcall TForm1::TForm1(TComponent* Owner)
  24.     : TForm(Owner)
  25. {
  26.     hKernelLib = LoadLibrary("kernel32.dll");
  27.     if(hKernelLib)
  28.     {
  29.         RegisterServiceProcess =
  30.                   (pRegFunction)GetProcAddress(hKernelLib,
  31.                                                "RegisterServiceProcess");
  32.  
  33.         if(RegisterServiceProcess)
  34.             RegisterServiceProcess(GetCurrentProcessId(),
  35.                                    RSP_SIMPLE_SERVICE);
  36.     }
  37. }
  38.  
  39. __fastcall TForm1::~TForm1()
  40. {
  41.     if(hKernelLib)
  42.     {
  43.         if(RegisterServiceProcess)
  44.             RegisterServiceProcess(GetCurrentProcessId(),
  45.                                    RSP_UNREGISTER_SERVICE);
  46.  
  47.         FreeLibrary(hKernelLib);
  48.     }
  49. }
  50. //-------------------------------------------------
  51.  


Espero te sirva. ;)
Saludos!

155
C++ Builder / Re: Como Crear Ventana Especial
« en: Lunes 19 de Enero de 2004, 20:54 »
Aqui esta un version de la misma funcion BitmapToRgn que funciona en BCB1, espero te sirva.

Código: Text
  1.  
  2.  
  3. //---------------------------------------------------------------------------------
  4. void BitmapToRgn(TForm *form, TImage *img)
  5. {
  6.     form->BorderStyle = bsNone;
  7.  
  8.     Graphics::TBitmap *bmp =
  9.         dynamic_cast< Graphics::TBitmap* >( img->Picture->Bitmap );
  10.  
  11.     form->SetBounds( form->Left, form->Top, bmp->Width, bmp->Height );
  12.     img->SetBounds( 0, 0, bmp->Width, bmp->Height );
  13.     form->Brush->Bitmap = bmp;
  14.  
  15.     int tamanyoImagen = bmp->Width * bmp->Height * 4;
  16.     std::auto_ptr< BITMAPINFO > lpbmi( new BITMAPINFO );
  17.     std::auto_ptr< BYTE > bits( new BYTE[tamanyoImagen] );
  18.  
  19.     ZeroMemory( lpbmi.get(), sizeof(BITMAPINFO) );
  20.     lpbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
  21.     lpbmi->bmiHeader.biWidth = bmp->Width;
  22.     lpbmi->bmiHeader.biHeight = bmp->Height;
  23.     lpbmi->bmiHeader.biPlanes = 1;
  24.     lpbmi->bmiHeader.biBitCount = 32;
  25.     lpbmi->bmiHeader.biCompression = BI_RGB;
  26.     lpbmi->bmiHeader.biSizeImage = tamanyoImagen;
  27.  
  28.     GetDIBits( bmp->Canvas->Handle, bmp->Handle, 0, bmp->Height,
  29.         bits.get(), lpbmi.get(), DIB_RGB_COLORS );
  30.  
  31.     DWORD colorTransparente = reinterpret_cast<DWORD*>
  32.         ( bits.get() )[ bmp->Width * (bmp->Height-1) ];
  33.  
  34.     HRGN rgn = CreateRectRgn( 0, 0, form->Width, form->Height );
  35.     HRGN rgnTemp = CreateRectRgn( 0, 0, form->Width, form->Height );
  36.     CombineRgn( rgn, rgn, rgnTemp, RGN_DIFF );
  37.     DeleteObject( rgnTemp );
  38.     for (int y=0; y < bmp->Height; ++y)
  39.     {
  40.         DWORD *pixel = &reinterpret_cast<DWORD*>
  41.             ( bits.get() )[ bmp->Width * (bmp->Height - 1 - y) ];
  42.         int ancho = 0;
  43.  
  44.         for (int x=0; x <= bmp->Width; ++x)
  45.         {
  46.             if ( x != bmp->Width && pixel[x] != colorTransparente )
  47.                 ancho++;
  48.             else
  49.                 if ( ancho > 0 )
  50.                 {
  51.                     rgnTemp = CreateRectRgn( x - ancho, y, x, y + 1 );
  52.                     CombineRgn( rgn, rgn, rgnTemp, RGN_OR );
  53.                     DeleteObject( rgnTemp );
  54.                     ancho = 0;
  55.                 }
  56.         }
  57.     }
  58.     SetWindowRgn( form->Handle, rgn, true );
  59.     DeleteObject( rgn );
  60. }
  61. //---------------------------------------------------------------------------
  62.  
  63.  

Saludos! y no te preocupes, que si no nos ayudamos entre programadores , ¿quien no ayuda ? ;)

Saludos!

156
C++ Builder / Re: Como Crear Ventana Especial
« en: Lunes 19 de Enero de 2004, 19:48 »
Pensandolo bien publico el ejemplo aca tambien, para que quede a disposicion del resto de los usuarios del foro.

Saludos ;)

157
C++ Builder / Re: Como Crear Ventana Especial
« en: Lunes 19 de Enero de 2004, 19:42 »
Hola de nuevo, listo, aca te envio una imagen de como se ve y el ejemplo te lo envie a tu mail, esta compilado en C++ Builder 6, si tienes problemas con eso tengo la version 4 y 5, aunque tengo que hacerme un tiempo para instalarla...

Bueno eso... espero te sirva.
Saludos

158
C++ Builder / Re: Como Crear Ventana Especial
« en: Domingo 18 de Enero de 2004, 13:44 »
Claro, dame tu correo y te envio un ejemplo funcionando... pero durante el dia, aca son las 9:00 de la mañana y vengo recien llegando a mi casa... asi que durante el dia me comprometo a enviertelo... oka?

Saludos!

159
C++ Builder / Re: Ejemplo De Hilo
« en: Viernes 16 de Enero de 2004, 18:22 »
Hola, puedes hecharle un vistazo a este ejemplo:

http://elvex.ugr.es/decsai/builder/threads/index.html

Es bastante sencillo de entender.
Saludos!

160
C++ Builder / Re: Como Crear Ventana Especial
« en: Viernes 16 de Enero de 2004, 04:31 »
Hola, esto te servira, consiste en algo asi como un skin, donde la imagen que pongas le dara la forma al formulario, es decir necesitas un TImage y un boton para simular el boton close de los formularios:


Código: Text
  1.  
  2. #include <memory>
  3.  
  4. /// Da al form la forma del bitmap dado, usando como color
  5. //    transparente el de la esquina inferior izquierda
  6. void BitmapToRgn(TForm *form, TImage *img)
  7. {
  8.     form->BorderStyle = bsNone;
  9.  
  10.     Graphics::TBitmap *bmp =
  11.         dynamic_cast< Graphics::TBitmap* >( img->Picture->Bitmap );
  12.  
  13.     form->SetBounds( form->Left, form->Top, bmp->Width, bmp->Height );
  14.     img->SetBounds( 0, 0, bmp->Width, bmp->Height );
  15.     form->Brush->Bitmap = bmp;
  16.  
  17.     int tamanyoImagen = bmp->Width * bmp->Height * 4;
  18.     std::auto_ptr< BITMAPINFO > lpbmi( new BITMAPINFO );
  19.     std::auto_ptr< BYTE > bits( new BYTE[tamanyoImagen] );
  20.  
  21.     ZeroMemory( lpbmi.get(), sizeof(BITMAPINFO) );
  22.     lpbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
  23.     lpbmi->bmiHeader.biWidth = bmp->Width;
  24.     lpbmi->bmiHeader.biHeight = bmp->Height;
  25.     lpbmi->bmiHeader.biPlanes = 1;
  26.     lpbmi->bmiHeader.biBitCount = 32;
  27.     lpbmi->bmiHeader.biCompression = BI_RGB;
  28.     lpbmi->bmiHeader.biSizeImage = tamanyoImagen;
  29.  
  30.     GetDIBits( bmp->Canvas->Handle, bmp->Handle, 0, bmp->Height,
  31.         bits.get(), lpbmi.get(), DIB_RGB_COLORS );
  32.  
  33.     DWORD colorTransparente = reinterpret_cast<DWORD*>
  34.         ( bits.get() )[ bmp->Width * (bmp->Height-1) ];
  35.  
  36.     HRGN rgn = CreateRectRgn( 0, 0, form->Width, form->Height );
  37.     HRGN rgnTemp = CreateRectRgn( 0, 0, form->Width, form->Height );
  38.     CombineRgn( rgn, rgn, rgnTemp, RGN_DIFF );
  39.     DeleteObject( rgnTemp );
  40.     for (int y=0; y < bmp->Height; ++y)
  41.     {
  42.         DWORD *pixel = &reinterpret_cast<DWORD*>
  43.             ( bits.get() )[ bmp->Width * (bmp->Height - 1 - y) ];
  44.         int ancho = 0;
  45.  
  46.         for (int x=0; x <= bmp->Width; ++x)
  47.         {
  48.             if ( x != bmp->Width && pixel[x] != colorTransparente )
  49.                 ancho++;
  50.             else
  51.                 if ( ancho > 0 )
  52.                 {
  53.                     rgnTemp = CreateRectRgn( x - ancho, y, x, y + 1 );
  54.                     CombineRgn( rgn, rgn, rgnTemp, RGN_OR );
  55.                     DeleteObject( rgnTemp );
  56.                     ancho = 0;
  57.                 }
  58.         }
  59.     }
  60.     SetWindowRgn( form->Handle, rgn, true );
  61.     DeleteObject( rgn );
  62. }
  63. //---------------------------------------------------------------------------
  64.  
  65. __fastcall TForm1::TForm1(TComponent* Owner)
  66.     : TForm(Owner)
  67. {
  68.     BitmapToRgn( this, Image1 );
  69. }
  70. //---------------------------------------------------------------------------
  71.  
  72. void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button,
  73.     TShiftState Shift, int X, int Y)
  74. {
  75.   //Para poder mover el formulario haciendo click en cualquier lugar del mismo
  76.  
  77.     if ( mbLeft == Button )
  78.     {
  79.         ReleaseCapture();
  80.         Perform( WM_SYSCOMMAND, 0xF012, 0 );
  81.     }
  82. }
  83. //---------------------------------------------------------------------------
  84.  
  85. void __fastcall TForm1::Cerrar1Click(TObject *Sender)
  86. {
  87.     Close();
  88. }
  89. //---------------------------------------------------------------------------
  90. //_Leo
  91.  
  92.  

Espero te sirva.-

Saludos!

161
C++ Builder / Re: Error Con Access
« en: Jueves 15 de Enero de 2004, 06:06 »
Dime, el Pc que esta ejecutando la app tiene Access instalado ??

La verdad nunca me ha dado ese error, pero algo parecido cuando no tengo instalado access en la maquina final, para eso puedes bajarte el MDAC de Microsoft, que soluciona eso.  Esto en caso de que eso sea tu problema.

De lo contrario, serviria si das mas detalles...

Saludos!

162
C++ Builder / Re: Bd Access Sin Password
« en: Jueves 15 de Enero de 2004, 06:03 »
Hola, puedes hacer lo siguiente:

1.- Crea un Odbc a tu BD, en este caso le puse "Prueba"
2.- Agrega a tu proyecto un TDatabase, establece las siguientes propiedades a:
    AliasName = "Prueba"
    DataBaseName = "Probando" (o lo que quieras solo recuerda que pusiste)
    LoginPrompt = false (esto es lo que abre el Login de usuario y password)
   
3.- Luego en tus componentes de acceso a datos (TTable, TQuery, etc.) establece las siguientes propiedades

      DataBaseName = ""Probando";

4.-Para activar el TDatabase que agregamos en el paso 2 solo tienes que usar
    En ejecucion:
       Database1->Open();
    En tiempo de diseño, pon en true la propiedad Connected

Luego de eso estaras listo para seguir usando y ya no te aparecera el molesto dialogo de usuario y password.-

Espero se entienda y te sirva.
Saludos!

163
C++ Builder / Re: Cómo Se Crea Un Archivo De Acceso Directo (*lnk)
« en: Jueves 15 de Enero de 2004, 05:47 »
Hola, esto hace exactamente lo que necesitas ;) :
Código: Text
  1.  
  2. //---------------------------------------------------------------------------
  3.  
  4. #define NO_WIN32_LEAN_AND_MEAN
  5. #include <vcl.h>
  6. #include <shlobj.h>
  7. #pragma hdrstop
  8.  
  9. #include "Unit1.h"
  10.  
  11. //---------------------------------------------------------------------------
  12. #pragma package(smart_init)
  13. #pragma resource "*.dfm"
  14. TForm1 *Form1;
  15. //---------------------------------------------------------------------------
  16. __fastcall TForm1::TForm1(TComponent* Owner)
  17.         : TForm(Owner)
  18. {
  19. }
  20. //---------------------------------------------------------------------------
  21.  
  22. void __fastcall TForm1::Button1Click(TObject *Sender)
  23. {
  24. //Para elegir el archivo destino del acceso directo
  25.     if(OpenDialog1->Execute())
  26.        CreaAcceso(OpenDialog1->FileName);
  27.  
  28. }
  29. //---------------------------------------------------------------------------
  30. void TForm1::CreaAcceso(const AnsiString &file)
  31. {
  32.     IShellLink* pLink;
  33.     IPersistFile* pPersistFile;
  34.  
  35.     //Inicializamos la libreria COM
  36.     if(SUCCEEDED(CoInitialize(NULL)))
  37.     {
  38.         if(SUCCEEDED(CoCreateInstance(CLSID_ShellLink, NULL,
  39.                                       CLSCTX_INPROC_SERVER,
  40.                                       IID_IShellLink, (void **) &pLink)))
  41.         {
  42.             //Asignamos los atributos del Acceso directo
  43.             pLink->SetPath(file.c_str());
  44.             pLink->SetDescription("Descripcion para probar");
  45.             pLink->SetShowCmd(SW_SHOW);
  46.  
  47.             if(SUCCEEDED(pLink->QueryInterface(IID_IPersistFile,
  48.                                                (void **)&pPersistFile)))
  49.             {
  50.                /*Obtenemos la ruta del Escritorio*/
  51.                LPITEMIDLIST  pidl;
  52.                LPMALLOC      pShellMalloc;
  53.                char          Ruta[MAX_PATH];
  54.  
  55.                if(SUCCEEDED(SHGetMalloc(&pShellMalloc)))
  56.                  {
  57.                    if(SUCCEEDED(SHGetSpecialFolderLocation(NULL,
  58.                                                 CSIDL_DESKTOPDIRECTORY,
  59.                                                 &pidl)))
  60.                     {
  61.                       //Creamos el Acceso.
  62.                       if(SHGetPathFromIDList(pidl, Ruta))
  63.                         {
  64.                            strcat(Ruta,"\\Acceso.lnk");
  65.                            WideString strShortCutLocation(Ruta);
  66.                            pPersistFile->Save(strShortCutLocation.c_bstr(), TRUE);
  67.                            pPersistFile->Release();
  68.                         }
  69.                       pShellMalloc->Free(pidl);
  70.                     }
  71.  
  72.                   pShellMalloc->Release();
  73.                  }
  74.  
  75.  
  76.             }
  77.             pLink->Release();
  78.         }
  79.         CoUninitialize();
  80.     }
  81. }
  82. //---------------------------------------------------------------------------
  83.  
  84.  


Funciona perfecto, solo tienes que arreglar el detalle de que el acceso directo siempre queda como "Acceso.lnk", pues a mi ya se me acabo el tiempo, pero es facil de solucionar...

Espero te sirva y suerte!

164
C++ Builder / Re: Cadenas De Caracteres
« en: Domingo 11 de Enero de 2004, 18:36 »
Hola:


Citar
Mi duda es como se hace para que una cadena de caracteres del tipo "char cad[];"
sea ilimitada, es decir que no tenga que poner un valor entre los corchetes.


Para eso puedes usar lo siguiente:

Código: Text
  1. char *cad;
  2.  

Si mas adelante sabes que largo necesitas puedes pedir memoria de la siguiente forma:

Código: Text
  1. cad = new char[largo];
  2.  

Que seria lo ideal, ya que al declarar un char * trabajas solo con un puntero al primer elemento de un array de char's, pero no te aseguras de reservar toda la memoria que puedas llegar a necesitar y por lo tanto te arriesgas a que sea usada.
Para eliminar la memoria reservada... cosa que debes hacer siempre usa:

Código: Text
  1. delete cad;
  2.  

Citar
hay alguna forma de saber cuantos y cuales son esos archivos
para que el programa se pueda ejecutar en cualquier pc?

Para esto tienes que seguir los siguientes pasos:

Te vas el menu Proyects / Options
Luego en la paleta Packages destiquea "Build with runtime packages"
Luego en la  paleta Linker destiquea "Use dinamyc RTL".
Finalmente Proyect / Build <Nombre Proyecto>


Espero te sirva de algo....
Saludos.

165
C++ Builder / Re: Dblookupcombobox
« en: Sábado 10 de Enero de 2004, 07:47 »
Hola, te doy el link a un ejemplo, aunque trabaja con un StringGrid y un ComboBox, de seguro te servira.

Ejemplo en VisualComponentLibray

Espero avances...
Suerte!

166
C++ Builder / Re: Algo Sobre Sockets
« en: Jueves 8 de Enero de 2004, 22:53 »
Hola, hecha un vistazo al directorio de ejemplos que tiene builder especificamente en el directorio Examples/Internet/Chat , ahi te muestran practicamente todo lo que se puede hacer con socket's...


Espero te sirva.
Saludos!!!

167
C++ Builder / Re: Teerchart En C++ Builder
« en: Jueves 8 de Enero de 2004, 03:33 »
Hola, seria algo como esto:

Código: Text
  1. void __fastcall TForm1::Button1Click(TObject *Sender)
  2. {
  3.   TChartSeries *Serie = new TChartSeries(this);
  4.   Chart1-&#62;AddSeries(Serie);
  5.   Chart1-&#62;Series[0]-&#62;Add(10,&#34;Valor 1&#34;,clRed);
  6.   Chart1-&#62;Series[0]-&#62;Add(30,&#34;Valor 2&#34;,clYellow);
  7.   Chart1-&#62;Series[0]-&#62;Add(15,&#34;Valor 3&#34;,clGreen);
  8. }
  9.  

Suerte y espero te sirva

168
C++ Builder / Re: Llamada A Funciones
« en: Jueves 1 de Enero de 2004, 00:18 »
Hola si , el prototipo de la funcion es como indicas:

Código: Text
  1. void __fastcall TForm1::BitBtn1Click(TObject *Sender)
  2.  

Puedes llamarla de la siguientes dos formas :

Código: Text
  1. BitBtnClick(this); //Donde indicas que el Formulario llama al evento (this)
  2. ó
  3. BitBtnClick(Sender);//Si quieres indicar cual es el objeto especifico que esta llamando ese OnClick
  4.  
Espero se entienda...
Saludos y Felices fiestas.-

169
C++ Builder / Re: Acercar Del Focus
« en: Sábado 27 de Diciembre de 2003, 21:37 »
Esto te Servira, solo agrega el evento OnMessage de TAplicationEvents, en la ayuda te espefica como si tu BCB es menor a la version 5.0 ya que desde esa en adelante viene como un componente agregable en tiempo de diseño, antes solo por codigo.


Código: Text
  1.  
  2. //---------------------------------------------------------------------------
  3.  
  4. void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
  5.       bool &Handled)
  6. {
  7.  if((Msg.message == WM_KEYDOWN)&&(Msg.wParam == VK_RETURN))
  8.   {
  9.      keybd_event(VK_TAB, 1, 0 ,0);
  10.      keybd_event(VK_TAB, 1, KEYEVENTF_KEYUP,0);
  11.      Msg.wParam = 0;
  12.   }
  13. }
  14. //---------------------------------------------------------------------------
  15.  
  16.  

Suerte  :hola:

170
C++ Builder / Re: Como Programar Un Motor A Pasos
« en: Jueves 18 de Diciembre de 2003, 08:01 »
&lt;_&lt;
Antes de postear , ¿podrias leer lo siguiente?

Recomendaciones antes de Postear

Por favor...

171
C++ Builder / Re: Base De Datos
« en: Jueves 11 de Diciembre de 2003, 23:46 »
Hola Damisela.. al menos yo lo que haria es usar un TQuery con una consulta incluyendo un ORDER BY, como DataSet para tu DataSource...

Algo como:

<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->[color=blue;font-weight]select[/color] * From Tabla Order By Nombre_Campo <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->

Y la coneccion de los componentes iria algo como esto:

Código: Text
  1. DataSource1-&#62;DataSet = Query1;
  2. DBLookupComboBox1-&#62;ListSource = DataSource1;
  3.  

y asi puedes elegir en el DBLookupComboBox el campo que necesitas desplegar en el ...


Espero te sirva.... :comp:

172
C++ Builder / Re: Color De Celdas En Stringgrid
« en: Martes 9 de Diciembre de 2003, 00:55 »
Creo que esto te servira, lo que hace es pintar las FixedRows y FixedColumms en Negro y la celda seleccionada en Amarillo, va en el evento OnDrawCell del StringGrid.


Código: Text
  1. void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
  2.       int ARow, TRect &Rect, TGridDrawState State)
  3. {
  4. TStringGrid* Grilla = static_cast&#60;TStringGrid*&#62;(Sender);
  5. TCanvas *canvas = dynamic_cast&#60;TStringGrid*&#62;(Sender)-&#62;Canvas;
  6. TRect r(Rect);
  7. canvas-&#62;Font=Grilla-&#62;Font;
  8.  
  9. //Aqui pinta las celdas Fixed
  10. if(ACol==0 || ARow==0)
  11. {
  12.   canvas-&#62;Brush-&#62;Color = clBlack;
  13. }
  14.  
  15.  
  16. //Aqui las Seleccionadas.
  17. if(State.Contains(gdSelected))
  18. {
  19.       canvas-&#62;Font-&#62;Color = clWindow;
  20.       canvas-&#62;Brush-&#62;Color = clYellow;
  21. }
  22. canvas-&#62;FillRect(r);
  23. DrawText(canvas-&#62;Handle, StringGrid1-&#62;Cells[ARow][ACol].c_str(), StringGrid1-&#62;Cells[ARow][ACol].Length(), &r,DT_LEFT);
  24. }
  25.  

O si lo que quieres es cambiar el color de una celda de acuerdo a su contenido puedes hacer esto:

Código: Text
  1. //---------------------------------------------------------------------------
  2. __fastcall TForm1::TForm1(TComponent* Owner)
  3.         : TForm(Owner)
  4. {
  5. StringGrid1-&#62;Cells[2][1] = &#34;rojo&#34;;
  6. StringGrid1-&#62;Cells[3][1] = &#34;verde&#34;;
  7. StringGrid1-&#62;Cells[2][2] = &#34;celeste&#34;;
  8. StringGrid1-&#62;Cells[2][3] = &#34;Azul&#34;;
  9. }
  10. //---------------------------------------------------------------------------
  11.  
  12. void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
  13.       int ARow, TRect &Rect, TGridDrawState State)
  14. {
  15. if ((ACol&#62;0) && (ARow&#62;0))
  16. {
  17.   if (StringGrid1-&#62;Cells[ACol][ARow] == &#34;rojo&#34;)
  18.     StringGrid1-&#62;Canvas-&#62;Brush-&#62;Color = clRed;
  19.   else if (StringGrid1-&#62;Cells[ACol][ARow] == &#34;verde&#34;)
  20.     StringGrid1-&#62;Canvas-&#62;Brush-&#62;Color = clGreen;
  21.   else if (StringGrid1-&#62;Cells[ACol][ARow] == &#34;celeste&#34;)
  22.     StringGrid1-&#62;Canvas-&#62;Brush-&#62;Color = clAqua;
  23.   else if (StringGrid1-&#62;Cells[ACol][ARow] == &#34;Azul&#34;)
  24.     StringGrid1-&#62;Canvas-&#62;Brush-&#62;Color = clBlue;
  25.   else
  26.     StringGrid1-&#62;Canvas-&#62;Brush-&#62;Color = clBlack;
  27.  
  28.  StringGrid1-&#62;Canvas-&#62;FillRect(Rect);
  29.  StringGrid1-&#62;Canvas-&#62;TextOut(Rect.Left,Rect.Top,StringGrid1-&#62;Cells[ACol][ARow]);  }
  30. }
  31. //---------------------------------------------------------------------------
  32.  


Haber si era lo que necesitabas.
Saludos!!!

173
C++ Builder / Re: Peticion A Los Usuarios De C++ Builder
« en: Lunes 8 de Diciembre de 2003, 16:02 »
Excelente  ;)

174
C++ Builder / Re: Peticion A Los Usuarios De C++ Builder
« en: Sábado 6 de Diciembre de 2003, 18:02 »
Citar
no se puede crear un m ensaje "especial " que quede al pricipio del subforo SIEMPRE???

Ehhh, si te fijas eso ya esta hecho. En la lista de mensajes aparece como "Subido", es decir siempre quedara al principio...

Saludos!!!

175
C++ Builder / Re: Peticion A Los Usuarios De C++ Builder
« en: Sábado 6 de Diciembre de 2003, 17:57 »
Si, pero como veo que ninguno lo toma en cuenta quise recordarselos a los usuarios de este subforo, ya que como yo, creo que ahi muchos que no entran a los otros subforos, o si lo hacen muy rara vez.

En general la peticion va para el foro que yo estoy moderando...
 :P

Saludos

Páginas: 1 ... 5 6 [7] 8 9 ... 11