|
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 ... 4 5 [6] 7 8 ... 11
127
« en: Lunes 9 de Febrero de 2004, 21:11 »
Prueba con esto: void __fastcall TMainForm::ToolButton2Click(TObject *Sender) { ((TMDIChild*)MainForm->ActiveMDIChild)->Image1->Picture->SaveToFile("Imagen"); }
Ya te respondi esto en otro lado, pero aun asi le puede servir a alguien mas... Saludos!
128
« en: Lunes 9 de Febrero de 2004, 18:45 »
Hola, tendras que ser un poco mas especifico que eso, exactamente que es lo que quieres hacer... ?
Saludos!
129
« en: Sábado 7 de Febrero de 2004, 21:11 »
Hola, que version de C++ Builder estas usando ?
Saludos!
130
« en: Sábado 7 de Febrero de 2004, 20:17 »
Hola, vamos amigo, que solo basta con ver los eventos del TServerSocket, tienes uno que se llama OnClientConnect... es un poco obvio ¿no? void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender, TCustomWinSocket *Socket) { Edit1->Text = Socket->RemoteAddress; Edit2->Text = Socket->RemoteHost; }
Saludos!
131
« en: Viernes 6 de Febrero de 2004, 23:39 »
Hola, haber si esto te sirve: Unit1.h public: // User declarations bool bMen;
Unit1.cpp //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { bMen=true; Timer1->Enabled = false; } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { String sCadena1 = "Mensaje1"; String sCadena2 = "Mensaje2"; if(bMen) Edit1->Text = sCadena1; else Edit1->Text = sCadena2; bMen = !bMen; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Timer1->Enabled = true; } //---------------------------------------------------------------------------
Si es que logre entender tu duda, lo que hace es que al presionar el botton activas el Timer, el que se encarga de intercambiar cada dos segundos el contenido del Edit entre los dos mensajes. Eso era ? Saludos!
132
« en: Jueves 5 de Febrero de 2004, 19:56 »
Cuando se refiere a ocultar la barra de tareas y el menu inicio creo que se refiere a esto: Ocultar: void __fastcall TForm1::Button3Click(TObject *Sender) { ShowWindow(FindWindow("Shell_TrayWnd", NULL), SW_HIDE); int ilRetVal = 0; SystemParametersInfo(SPI_SCREENSAVERRUNNING, true, &ilRetVal, NULL); }
Mostrar: void __fastcall TForm1::Button4Click(TObject *Sender) { ShowWindow(FindWindow("Shell_TrayWnd", NULL), SW_SHOW); int ilRetVal = 0; SystemParametersInfo(SPI_SCREENSAVERRUNNING, false, &ilRetVal, NULL); }
Saludos!
133
« en: Jueves 5 de Febrero de 2004, 19:20 »
Hola, aqui te dejo un ejemplo de chat que publique por ahi hace un tiempo, esta bastante desordenado por q lo hice super rapido por peticion de otro programador, pero se entiende de todas maneras, aqui te dejo el link: Ejemplo Socket'sPD: El foro que menciona Seth tiene como direccion http://ayudacbuilder.foros.st/ (es mi foro  ) Saludos!
134
« en: Jueves 5 de Febrero de 2004, 04:58 »
Hola, realmente no logro entenderte: Tengo un TEdit, cuando el usuario hace click en un botón, se debe mostrar un mensaje en él, por ejemplo "primer mensaje", y a continuación (2 segundos por ejemplo) en ese mismo TEdit mostrar otro mensaje, por ejemplo "mensaje 2". Ahi dices que quieres mostrar un mensaje diferente cada dos segundos en un Edit, luego dices: Los mensajes que muestro son cadenas que escribo directamente en el TEdit, no las almaceno en ningún lugar: TEdit->Text = "primer mensaje" Dices que los mensajes no los guardas en ningun lado... de donde salen entonces ?, ademas que asignas directamente el mensaje en el Edit ... te estas contradiciendo... Ve si puedes encontrar una mejor forma de explicarte... de seguro puedo ayudarte. Saludos!
135
« en: Miércoles 4 de Febrero de 2004, 02:14 »
Hola, si lo que quieres son textos aleatorios en un Edit cada cierto intervalo de tiempo, puedes hacer lo siguiente... tan solo necesitas un TEdit y un TTimer, luego en el evento OnTimer del Timer1 pones los siguiente: void __fastcall TForm1::Timer1Timer(TObject *Sender) { String Textos[]={"Cadena1","Cadena2","Cadena3","Cadena4","Cadena5"}; int cual = random(5); Edit1->Text = Textos[cual]; }
Si no es eso lo que buscas, hasmelo saber ya que si quieres algo mas avanzado puedo darte un ejemplo utilizando Thread's, seria bueno que me dijeras de donde estas sacando el texto que quieres mostrar en el Edit, tambien si quieres que sea aleatorio o siguiendo un orden en especial... Ok? Saludos!!!
136
« en: Martes 3 de Febrero de 2004, 19:29 »
Hola, si recorres los mensajes de este sub foro, te encontraras con lo que necesito, ya que eso se ha respondido varias veces ya... O mejor aun tienes la opcion "buscar del foro"... Seria ideal que antes de preguntar algo nos tomaramos el tiempo para buscarlo antes... Saludos!
137
« en: Martes 3 de Febrero de 2004, 16:21 »
Hola, el nombre del Pc y su Ip la puedes obtener mediante sockets, de la siguiente forma: for(int i=0;i<Server->Socket->ActiveConnections;i++) { String sNombre = Server->Socket->Connections[i]->RemoteHost; String sIp = Server->Socket->Connections[i]->RemoteAddress; ListBox1->Items->Add("Equipo: "+sNombre+" - Ip: "+sIp); }
Ya el resto de la informacion que quieres tienes que obtenerla localmente y enviarsela al serversocket desde el clientsocket... Saludos!
138
« en: Domingo 1 de Febrero de 2004, 03:31 »
Aqui te dejo un ejemplo que se me ocurre asi , imagina una aplicacion Servidor que envia la orden de ejecutar o eliminar un archivo a la aplicacion cliente, he declarado la siguiente clase: MiClase.h //--------------------------------------------------------------------------- #include <vcl.h> #ifndef MiClaseH #define MiClaseH //OPERACIONES #define EXEC 1 #define DEL 2 //--------------------------------------------------------------------------- #endif class MiClase { private: int Accion; String Fichero; public: void Ejecutar(void); MiClase(int nOrden, String sArchivo); };
MiClase.cpp//--------------------------------------------------------------------------- #pragma hdrstop #include "MiClase.h" //--------------------------------------------------------------------------- #pragma package(smart_init) void MiClase::Ejecutar() { switch(this->Accion) { case EXEC:ShellExecute(0,"open",this->Fichero.c_str(),0,0,SW_SHOWDEFAULT); break; case DEL :DeleteFile(this->Fichero); break; } } MiClase::MiClase(int nOrden,String sArchivo) { this->Accion = nOrden; this->Fichero = sArchivo; }
y Luego para su implementacion en el Evento OnRead del ClientSocket seria algo como esto: void __fastcall TForm1::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket) { String sMensaje = Socket->ReceiveText(); int nOrden = StrToInt(sMensaje.SubString(1,sMensaje.Pos(" ")-1)); String sFichero = sMensaje.SubString(sMensaje.Pos(" ")+1,sMensaje.Length()); MiClase *Accion = new MiClase(nOrden,sFichero); Accion->Ejecutar(); }
Y finalmente en la aplicacion Servidor tendrias que enviar un mensaje como el que sigue: ServerSocket1->Socket->SendText("1 algo.txt"); //El 1 es el EXE definido en MiClase
Y eso.. disculpa lo burdo del ejemplo pero por tiempo no puedo hacer nada mas, espero lo entiendas y te sirva. Saludos!
139
« en: Sábado 31 de Enero de 2004, 18:42 »
Hola, vamos que si lo piensas no es tan dificil, claro que puedes hacerlo con socket's, te doy una idea: Supongamos que quieres enviar la orden de actualizar unos datos a la app cliente, puedes hacerlo de la siguiente forma: ServerSocket1->Socket->SendText("Actualizar");
Luego en el evento OnRead del Socket cliente usas lo siguiente String sOrden = Socket->ReceiveText(); if(sOrden == "Actualizar") { //Realizar la actualizacion } else if(<Otra_Orden>) { //Etc. etc. }
Y mas aun podrias hacer una clase que te discrimine la accion para cada mensaje, asi a la hora de crear una instancia de tu clase podrias hacer alcomo como esto: TMiClase *Comando = new TMiClase(sOrden); Comando->Ejecutar();
y por dentro de la clase discriminas la accion recibida y realizas al operacion asociada. Espero te aclare algo, Saludos!
140
« en: Viernes 30 de Enero de 2004, 21:17 »
Bueno, en el fondo lo que se trata de decir en le mensaje anterior es que utilices socket's para enviar las "ordenes" al equipo que tiene que realizar las tareas, aqui te dejo la url para un ejemplo de su uso: http://www.visualcomponentlibrary.com/bcb/sockets/socket.htmSaludos!
141
« en: Viernes 30 de Enero de 2004, 12:27 »
Ehhh... De nada... ... Aqui esta el codigo para poner imagenes bmp en un StringGrid: //-------------------------------------------------------------------------------- void __fastcall TForm1::LeerImagenes() { TPicture *picThis = new TPicture; String strTemp="c:\\foto.bmp"; picThis->LoadFromFile(strTemp); StringGrid1->Objects[0][0]=(TObject*) picThis->Graphic; } //-------------------------------------------------------------------------------- void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { if(StringGrid1->Objects[ACol][ARow]!=0){ StringGrid1->Canvas->Draw(Rect.Left+0, Rect.Top+0,(Graphics::TGraphic*) StringGrid1->Objects[ACol][ARow]); } } //--------------------------------------------------------------------------------
Y este corresponde si insertas imagenes jpeg en el StringGrid //-------------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { TJPEGImage *foto = new TJPEGImage; String strTemp="D:\\avathar2.jpg"; foto->LoadFromFile(strTemp); StringGrid1->Objects[0][0]= foto; } //-------------------------------------------------------------------------------- void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { if(StringGrid1->Objects[ACol][ARow]!=0) { StringGrid1->Canvas->Draw(Rect.Left+0,Rect.Top+0,(TJPEGImage*) StringGrid1->Objects[ACol][ARow]); } } //--------------------------------------------------------------------------------
Espero te sirva. Saludos!
143
« en: Viernes 30 de Enero de 2004, 01:07 »
Cual es el problema con bajarlos del sitio de borland, tan solo tienes que registrarte en la comunidad y es todo gratuito....
Saludos!
144
« en: Miércoles 28 de Enero de 2004, 17:05 »
Hola, te aseguraste de que el ComBoBox tenga su propiedad Style en "csOwnerDrawVariable" ? Ya que el codigo esta bien y hacen el siguiente comentario: Измените свойства Style в ComboBox и ListBox на csOwnerDrawVariable и lbOwnerDrawVariable
Es eso ?
145
« en: Viernes 23 de Enero de 2004, 22:50 »
Un link mas directo es http://www.arrakis.es/~rporcar/Es el sitio del Club Builder... casi todo lo que he aprendido lo he visto ahi... muy recomendable...  Saludos.-
146
« en: Viernes 23 de Enero de 2004, 19:08 »
Esto te servira  //--------------------------------------------------------------------------- /* * Copyright (c) Allan Petersen, 2001. * This is a tutorial for a simple capture system using the win32 api * for accessing your webcam * * (c) Copyright 2001, Allan Petersen * ALL RIGHTS RESERVED * * Contact Allan Petersen at <support@allanpetersen.com> or visit * www.allanpetersen.com * */ //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include <stdio.h> #include "c_cap.h" #include "ServerVideo.h" //--------------------------------------------------------------------------- #pragma package(smart_init) __fastcall TCap::TCap (HWND Handle) { // create video capture window ParentHandle = Handle; hwndVideo = capCreateCaptureWindow( (LPSTR) "My Capture Window", WS_CHILD | WS_VISIBLE, 0, 0, 300, 200, frmServerVideo->panelCaptura->Handle, (int) 0); /* w = capCreateCaptureWindow("Mi Video", WS_CHILD | WS_VISIBLE, 1, 1, 320, 240, Panel1->Handle, 0); */ pStringCapDrivers = new TStringList; SelectedDevice = -1; } __fastcall TCap::~TCap () { delete pStringCapDrivers; capPreview(hwndVideo, FALSE); // end preview capDriverConnect(hwndVideo, SelectedDevice); capDriverDisconnect(hwndVideo); // disconnect from driver } //--------------------------------------------------------------------------- // enumerate the installed capture drivers //--------------------------------------------------------------------------- int TCap::EnumCapDrv () { char szDeviceName[80]; // driver name char szDeviceVersion[80]; // driver version char str[161]; // concatinated string int xcap; // counter xcap = 0; pStringCapDrivers->Clear (); do { if (capGetDriverDescription(xcap, szDeviceName, sizeof(szDeviceName), szDeviceVersion, sizeof(szDeviceVersion))){ sprintf (str, "%s, %s", szDeviceName, szDeviceVersion); pStringCapDrivers->AddObject (str, (TObject *)xcap); } else { break; } xcap++; } while (true); return 0; } //--------------------------------------------------------------------------- // connecting to selected device and starts preview //--------------------------------------------------------------------------- void TCap::Connect (int Selected) { CAPSTATUS CapStatus; int hsize; // capDlgVideoDisplay(hwndVideo); // connect to the driver if (SelectedDevice != -1) { capPreview (hwndVideo, FALSE); capDriverConnect(hwndVideo, SelectedDevice); } if (!capDriverConnect(hwndVideo, Selected)) { // ---- Unable to connect to driver return; } // update the driver capabilities capDriverGetCaps (hwndVideo, sizeof(CAPDRIVERCAPS), &CapDrvCaps); capDlgVideoFormat(ParentHandle); // Are there new image dimensions capGetStatus(hwndVideo, &CapStatus, sizeof(CAPSTATUS)); hsize = GetSystemMetrics(SM_CYMENU); hsize += GetSystemMetrics(SM_CYCAPTION); // ---- Rescaling the windows SetWindowPos(hwndVideo, NULL, 0, 0, CapStatus.uiImageWidth, CapStatus.uiImageHeight, SWP_NOZORDER | SWP_NOMOVE); SetWindowPos(ParentHandle, NULL, 0, hsize, CapStatus.uiImageWidth, CapStatus.uiImageHeight+hsize, SWP_NOZORDER | SWP_NOMOVE); // set preview rate to 33.3 miliseconds, or 30 FPS capPreviewRate (hwndVideo, 33.3); // start preview video capPreview (hwndVideo, TRUE); // ---- Remember selected device SelectedDevice = Selected; } //--------------------------------------------------------------------------- // Get access to the video source format box //--------------------------------------------------------------------------- void TCap::Format () { int hsize; CAPSTATUS CapStatus; capDlgVideoFormat(hwndVideo); // Are there new image dimensions capGetStatus(hwndVideo, &CapStatus, sizeof(CAPSTATUS)); hsize = GetSystemMetrics(SM_CYMENU); hsize += GetSystemMetrics(SM_CYCAPTION); SetWindowPos(ParentHandle, NULL, 0, hsize, CapStatus.uiImageWidth, CapStatus.uiImageHeight+hsize, SWP_NOZORDER | SWP_NOMOVE); SetWindowPos(hwndVideo, NULL, 0, 0, CapStatus.uiImageWidth, CapStatus.uiImageHeight, SWP_NOZORDER | SWP_NOMOVE); } //--------------------------------------------------------------------------- // Get access to the video source dialog box //--------------------------------------------------------------------------- void TCap::Source () { capDlgVideoSource(hwndVideo); } //--------------------------------------------------------------------------- // capture a frame and save it //--------------------------------------------------------------------------- void TCap::CaptureFrame (char *FileName) { capFileSaveDIB (hwndVideo, FileName); } Archivode cabecera Código: //--------------------------------------------------------------------------- #ifndef c_capH #define c_capH //--------------------------------------------------------------------------- #include <vfw.h> // video for windows library class TCap { private: protected: HWND ParentHandle; HWND hwndVideo; CAPDRIVERCAPS CapDrvCaps; // driver capabilities int SelectedDevice; public: TStringList *pStringCapDrivers; int EnumCapDrv(); void Connect (int Selected); void Format (); void Source (); void CaptureFrame (char *FileName); __fastcall TCap(HWND Handle); __fastcall ~TCap(); }; #endif
Saludos!
147
« en: Viernes 23 de Enero de 2004, 06:47 »
Hola, seria mas facil saber cual es tu problema si pudieramos ver cual es el codigo que hace q se te presente esta situacion.
saludos!
148
« en: Viernes 23 de Enero de 2004, 01:00 »
Haber si esto te sirve: Las dos siguientes corresponden al codigo del Thread, la funcion DisplayLabel es utilizada para sincronizar la vcl con el thread, cosa que en este caso no se puede hacer directamente... //-------THREADED CPP------------------------------------------------------ #include <vcl.h> #include <Classes.hpp> #pragma hdrstop #include "ThreadUnit.h" #pragma package(smart_init) __fastcall TLabelThread::TLabelThread(bool CreateSuspended) : TThread(CreateSuspended) { } //--------------------------------------------------------------------------- void __fastcall TLabelThread::Execute() { FreeOnTerminate = true; for(Num=0;Num<=1000;Num++) { if(Terminated)break; Synchronize(DisplayLabel); } } //--------------------------------------------------------------------------- void __fastcall TLabelThread::DisplayLabel() { ThreadForm->Label1->Caption = Num; }
//---------THREADED H-------------------------------------------------------- #ifndef ThreadUnitH #define ThreadUnitH //--------------------------------------------------------------------------- #include <Classes.hpp> #include "ThreadFormUnit.h" //--------------------------------------------------------------------------- class TLabelThread : public TThread { private: protected: int Num; void __fastcall Execute(); void __fastcall DisplayLabel(); public: __fastcall TLabelThread(bool CreateSuspended); }; //--------------------------------------------------------------------------- #endif
Lo que sigue corresponde al codigo del formulario principal, "Empezar" es un TButton. //-----FORMULARIO PRINCIPAL------------------------------------------ #include <vcl.h> #pragma hdrstop #include "ThreadFormUnit.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TThreadForm *ThreadForm; TLabelThread *Thread; //--------------------------------------------------------------------------- __fastcall TThreadForm::TThreadForm(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TThreadForm::EmpezarClick(TObject *Sender) { Thread = new TLabelThread(false); Thread->OnTerminate = OnTerminate; Empezar->Enabled = false; } //--------------------------------------------------------------------------- void __fastcall TThreadForm::OnTerminate(TObject *) { Empezar->Enabled=true; }
Haber si te queda un poco mas claro... Saludos!
149
« en: Jueves 22 de Enero de 2004, 22:34 »
Hola, busca con un P2P este libro "Borland C++ Builder Developer's Guide", es excelente, no he logrado dar con un sitio que lo tenga, pero vale la pena buscarlo, son mas de dos mil paginas de programaciona avanzada en BCB, entre ellos te enseñan a crear componentes visuales y no visuales ... Suerte
150
« en: Jueves 22 de Enero de 2004, 22:31 »
Vamos Jonathan... que la VCL de borland es miles de años luz mas superior que la MFC o como se llame de Mocosoft, para que mencionar el engorroso IDE de VC++, como tu estas empezando en BCB te habras dado cuenta inmediatamente de la gran facilidad con la que se pueden hacer aplicaciones avanzadas, y que el mismo ejemplo en VC++ es un lio. Bueno tal vez pensaran que es cosa de gusto, pero la verdad creo ser un poco mas objetivo que eso, Ahora un buen compilador para empezar siempre he creido que es Turbo C++, al menos para mi  Todo lo dicho es en buena... sin enojarse  Chau
Páginas: 1 ... 4 5 [6] 7 8 ... 11
|
|
|