|
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
« 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
« 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
« 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
« 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): WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); Application->CreateForm(__classid(TForm1), &Form1); //Agrega estas dos lineas en esta misma posicion. Application->ShowMainForm = false; ShowWindow(Application->Handle, SW_HIDE); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } return 0; }
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: WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Title = ""; //Esta linea lo hace Application->Initialize(); Application->CreateForm(__classid(TForm1), &Form1); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } return 0; }
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: //------------Archivo Cabecera .h ------------------------------ typedef DWORD (__stdcall *pRegFunction)(DWORD, DWORD); class TForm1 : public TForm { __published: TButton *Button1; private: HINSTANCE hKernelLib; pRegFunction RegisterServiceProcess; public: __fastcall TForm1(TComponent* Owner); __fastcall ~TForm1(); }; //-----------Archivo fuente .cpp------------------------------ #include "Unit1.h" #define RSP_SIMPLE_SERVICE 1 #define RSP_UNREGISTER_SERVICE 0 __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { hKernelLib = LoadLibrary("kernel32.dll"); if(hKernelLib) { RegisterServiceProcess = (pRegFunction)GetProcAddress(hKernelLib, "RegisterServiceProcess"); if(RegisterServiceProcess) RegisterServiceProcess(GetCurrentProcessId(), RSP_SIMPLE_SERVICE); } } __fastcall TForm1::~TForm1() { if(hKernelLib) { if(RegisterServiceProcess) RegisterServiceProcess(GetCurrentProcessId(), RSP_UNREGISTER_SERVICE); FreeLibrary(hKernelLib); } } //-------------------------------------------------
Espero te sirva.  Saludos!
155
« 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. //--------------------------------------------------------------------------------- void BitmapToRgn(TForm *form, TImage *img) { form->BorderStyle = bsNone; Graphics::TBitmap *bmp = dynamic_cast< Graphics::TBitmap* >( img->Picture->Bitmap ); form->SetBounds( form->Left, form->Top, bmp->Width, bmp->Height ); img->SetBounds( 0, 0, bmp->Width, bmp->Height ); form->Brush->Bitmap = bmp; int tamanyoImagen = bmp->Width * bmp->Height * 4; std::auto_ptr< BITMAPINFO > lpbmi( new BITMAPINFO ); std::auto_ptr< BYTE > bits( new BYTE[tamanyoImagen] ); ZeroMemory( lpbmi.get(), sizeof(BITMAPINFO) ); lpbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); lpbmi->bmiHeader.biWidth = bmp->Width; lpbmi->bmiHeader.biHeight = bmp->Height; lpbmi->bmiHeader.biPlanes = 1; lpbmi->bmiHeader.biBitCount = 32; lpbmi->bmiHeader.biCompression = BI_RGB; lpbmi->bmiHeader.biSizeImage = tamanyoImagen; GetDIBits( bmp->Canvas->Handle, bmp->Handle, 0, bmp->Height, bits.get(), lpbmi.get(), DIB_RGB_COLORS ); DWORD colorTransparente = reinterpret_cast<DWORD*> ( bits.get() )[ bmp->Width * (bmp->Height-1) ]; HRGN rgn = CreateRectRgn( 0, 0, form->Width, form->Height ); HRGN rgnTemp = CreateRectRgn( 0, 0, form->Width, form->Height ); CombineRgn( rgn, rgn, rgnTemp, RGN_DIFF ); DeleteObject( rgnTemp ); for (int y=0; y < bmp->Height; ++y) { DWORD *pixel = &reinterpret_cast<DWORD*> ( bits.get() )[ bmp->Width * (bmp->Height - 1 - y) ]; int ancho = 0; for (int x=0; x <= bmp->Width; ++x) { if ( x != bmp->Width && pixel[x] != colorTransparente ) ancho++; else if ( ancho > 0 ) { rgnTemp = CreateRectRgn( x - ancho, y, x, y + 1 ); CombineRgn( rgn, rgn, rgnTemp, RGN_OR ); DeleteObject( rgnTemp ); ancho = 0; } } } SetWindowRgn( form->Handle, rgn, true ); DeleteObject( rgn ); } //---------------------------------------------------------------------------
Saludos! y no te preocupes, que si no nos ayudamos entre programadores , ¿quien no ayuda ?  Saludos!
156
« 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
« 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
« 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!
160
« 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: #include <memory> /// Da al form la forma del bitmap dado, usando como color // transparente el de la esquina inferior izquierda void BitmapToRgn(TForm *form, TImage *img) { form->BorderStyle = bsNone; Graphics::TBitmap *bmp = dynamic_cast< Graphics::TBitmap* >( img->Picture->Bitmap ); form->SetBounds( form->Left, form->Top, bmp->Width, bmp->Height ); img->SetBounds( 0, 0, bmp->Width, bmp->Height ); form->Brush->Bitmap = bmp; int tamanyoImagen = bmp->Width * bmp->Height * 4; std::auto_ptr< BITMAPINFO > lpbmi( new BITMAPINFO ); std::auto_ptr< BYTE > bits( new BYTE[tamanyoImagen] ); ZeroMemory( lpbmi.get(), sizeof(BITMAPINFO) ); lpbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); lpbmi->bmiHeader.biWidth = bmp->Width; lpbmi->bmiHeader.biHeight = bmp->Height; lpbmi->bmiHeader.biPlanes = 1; lpbmi->bmiHeader.biBitCount = 32; lpbmi->bmiHeader.biCompression = BI_RGB; lpbmi->bmiHeader.biSizeImage = tamanyoImagen; GetDIBits( bmp->Canvas->Handle, bmp->Handle, 0, bmp->Height, bits.get(), lpbmi.get(), DIB_RGB_COLORS ); DWORD colorTransparente = reinterpret_cast<DWORD*> ( bits.get() )[ bmp->Width * (bmp->Height-1) ]; HRGN rgn = CreateRectRgn( 0, 0, form->Width, form->Height ); HRGN rgnTemp = CreateRectRgn( 0, 0, form->Width, form->Height ); CombineRgn( rgn, rgn, rgnTemp, RGN_DIFF ); DeleteObject( rgnTemp ); for (int y=0; y < bmp->Height; ++y) { DWORD *pixel = &reinterpret_cast<DWORD*> ( bits.get() )[ bmp->Width * (bmp->Height - 1 - y) ]; int ancho = 0; for (int x=0; x <= bmp->Width; ++x) { if ( x != bmp->Width && pixel[x] != colorTransparente ) ancho++; else if ( ancho > 0 ) { rgnTemp = CreateRectRgn( x - ancho, y, x, y + 1 ); CombineRgn( rgn, rgn, rgnTemp, RGN_OR ); DeleteObject( rgnTemp ); ancho = 0; } } } SetWindowRgn( form->Handle, rgn, true ); DeleteObject( rgn ); } //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { BitmapToRgn( this, Image1 ); } //--------------------------------------------------------------------------- void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { //Para poder mover el formulario haciendo click en cualquier lugar del mismo if ( mbLeft == Button ) { ReleaseCapture(); Perform( WM_SYSCOMMAND, 0xF012, 0 ); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Cerrar1Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- //_Leo
Espero te sirva.- Saludos!
161
« 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
« 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
« en: Jueves 15 de Enero de 2004, 05:47 »
Hola, esto hace exactamente lo que necesitas  : //--------------------------------------------------------------------------- #define NO_WIN32_LEAN_AND_MEAN #include <vcl.h> #include <shlobj.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { //Para elegir el archivo destino del acceso directo if(OpenDialog1->Execute()) CreaAcceso(OpenDialog1->FileName); } //--------------------------------------------------------------------------- void TForm1::CreaAcceso(const AnsiString &file) { IShellLink* pLink; IPersistFile* pPersistFile; //Inicializamos la libreria COM if(SUCCEEDED(CoInitialize(NULL))) { if(SUCCEEDED(CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **) &pLink))) { //Asignamos los atributos del Acceso directo pLink->SetPath(file.c_str()); pLink->SetDescription("Descripcion para probar"); pLink->SetShowCmd(SW_SHOW); if(SUCCEEDED(pLink->QueryInterface(IID_IPersistFile, (void **)&pPersistFile))) { /*Obtenemos la ruta del Escritorio*/ LPITEMIDLIST pidl; LPMALLOC pShellMalloc; char Ruta[MAX_PATH]; if(SUCCEEDED(SHGetMalloc(&pShellMalloc))) { if(SUCCEEDED(SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOPDIRECTORY, &pidl))) { //Creamos el Acceso. if(SHGetPathFromIDList(pidl, Ruta)) { strcat(Ruta,"\\Acceso.lnk"); WideString strShortCutLocation(Ruta); pPersistFile->Save(strShortCutLocation.c_bstr(), TRUE); pPersistFile->Release(); } pShellMalloc->Free(pidl); } pShellMalloc->Release(); } } pLink->Release(); } CoUninitialize(); } } //---------------------------------------------------------------------------
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
« en: Domingo 11 de Enero de 2004, 18:36 »
Hola: 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: Si mas adelante sabes que largo necesitas puedes pedir memoria de la siguiente forma: 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: 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
« 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 VisualComponentLibrayEspero avances... Suerte!
166
« 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
« en: Jueves 8 de Enero de 2004, 03:33 »
Hola, seria algo como esto: void __fastcall TForm1::Button1Click(TObject *Sender) { TChartSeries *Serie = new TChartSeries(this); Chart1->AddSeries(Serie); Chart1->Series[0]->Add(10,"Valor 1",clRed); Chart1->Series[0]->Add(30,"Valor 2",clYellow); Chart1->Series[0]->Add(15,"Valor 3",clGreen); }
Suerte y espero te sirva
168
« en: Jueves 1 de Enero de 2004, 00:18 »
Hola si , el prototipo de la funcion es como indicas: void __fastcall TForm1::BitBtn1Click(TObject *Sender)
Puedes llamarla de la siguientes dos formas : BitBtnClick(this); //Donde indicas que el Formulario llama al evento (this) ó BitBtnClick(Sender);//Si quieres indicar cual es el objeto especifico que esta llamando ese OnClick
Espero se entienda... Saludos y Felices fiestas.-
169
« 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. //--------------------------------------------------------------------------- void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg, bool &Handled) { if((Msg.message == WM_KEYDOWN)&&(Msg.wParam == VK_RETURN)) { keybd_event(VK_TAB, 1, 0 ,0); keybd_event(VK_TAB, 1, KEYEVENTF_KEYUP,0); Msg.wParam = 0; } } //---------------------------------------------------------------------------
Suerte
171
« 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: DataSource1->DataSet = Query1; DBLookupComboBox1->ListSource = DataSource1;
y asi puedes elegir en el DBLookupComboBox el campo que necesitas desplegar en el ... Espero te sirva....
172
« 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. void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { TStringGrid* Grilla = static_cast<TStringGrid*>(Sender); TCanvas *canvas = dynamic_cast<TStringGrid*>(Sender)->Canvas; TRect r(Rect); canvas->Font=Grilla->Font; //Aqui pinta las celdas Fixed if(ACol==0 || ARow==0) { canvas->Brush->Color = clBlack; } //Aqui las Seleccionadas. if(State.Contains(gdSelected)) { canvas->Font->Color = clWindow; canvas->Brush->Color = clYellow; } canvas->FillRect(r); DrawText(canvas->Handle, StringGrid1->Cells[ARow][ACol].c_str(), StringGrid1->Cells[ARow][ACol].Length(), &r,DT_LEFT); }
O si lo que quieres es cambiar el color de una celda de acuerdo a su contenido puedes hacer esto: //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { StringGrid1->Cells[2][1] = "rojo"; StringGrid1->Cells[3][1] = "verde"; StringGrid1->Cells[2][2] = "celeste"; StringGrid1->Cells[2][3] = "Azul"; } //--------------------------------------------------------------------------- void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { if ((ACol>0) && (ARow>0)) { if (StringGrid1->Cells[ACol][ARow] == "rojo") StringGrid1->Canvas->Brush->Color = clRed; else if (StringGrid1->Cells[ACol][ARow] == "verde") StringGrid1->Canvas->Brush->Color = clGreen; else if (StringGrid1->Cells[ACol][ARow] == "celeste") StringGrid1->Canvas->Brush->Color = clAqua; else if (StringGrid1->Cells[ACol][ARow] == "Azul") StringGrid1->Canvas->Brush->Color = clBlue; else StringGrid1->Canvas->Brush->Color = clBlack; StringGrid1->Canvas->FillRect(Rect); StringGrid1->Canvas->TextOut(Rect.Left,Rect.Top,StringGrid1->Cells[ACol][ARow]); } } //---------------------------------------------------------------------------
Haber si era lo que necesitabas. Saludos!!!
173
« en: Lunes 8 de Diciembre de 2003, 16:02 »
Excelente
174
« en: Sábado 6 de Diciembre de 2003, 18:02 »
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
« 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... Saludos
Páginas: 1 ... 5 6 [7] 8 9 ... 11
|
|
|