• Miércoles 14 de Mayo de 2025, 21:15

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 ... 4 5 [6] 7 8 ... 11
126
C++ Builder / Re: Comunicacion Con Varios Sockets
« en: Martes 10 de Febrero de 2004, 19:02 »
Creo que te habia respondido eso en otro post, no recuerdo si eras tu o no...


http://foros.solocodigo.com/index.php?showtopic=6414

Saludos!

127
C++ Builder / Re: Ventana Activa En Una Mdichildren
« en: Lunes 9 de Febrero de 2004, 21:11 »
Prueba con esto:

Código: Text
  1. void __fastcall TMainForm::ToolButton2Click(TObject *Sender)
  2. {
  3.  ((TMDIChild*)MainForm->ActiveMDIChild)->Image1->Picture->SaveToFile("Imagen");
  4. }
  5.  

Ya te respondi esto en otro lado, pero aun asi le puede servir a alguien mas...  ;)

Saludos!

128
C++ Builder / Re: Aplicaciones Mdi
« 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
C++ Builder / Re: Colocar Icono Al Lado Del Reloj
« en: Sábado 7 de Febrero de 2004, 21:11 »
Hola, que version de C++ Builder estas usando ?

Saludos!

130
C++ Builder / Re: Comunicacion Con Varios Sockets
« 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?  ;)

Código: Text
  1. void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender,
  2.       TCustomWinSocket *Socket)
  3. {
  4.  Edit1->Text = Socket->RemoteAddress;
  5.  Edit2->Text = Socket->RemoteHost;
  6. }
  7.  

Saludos!

131
C++ Builder / Re: Tiempo Espera
« en: Viernes 6 de Febrero de 2004, 23:39 »
Hola, haber si esto te sirve:

Unit1.h

Código: Text
  1.  
  2. public:  // User declarations
  3.         bool bMen;
  4.  

Unit1.cpp


Código: Text
  1. //---------------------------------------------------------------------------
  2. __fastcall TForm1::TForm1(TComponent* Owner)
  3.         : TForm(Owner)
  4. {
  5.  bMen=true;
  6.  Timer1->Enabled = false;
  7. }
  8. //---------------------------------------------------------------------------
  9. void __fastcall TForm1::Timer1Timer(TObject *Sender)
  10. {
  11.  String sCadena1 = "Mensaje1";
  12.  String sCadena2 = "Mensaje2";
  13.  
  14.  if(bMen)
  15.   Edit1->Text = sCadena1;
  16.  else
  17.   Edit1->Text = sCadena2;
  18.  
  19.  bMen = !bMen;
  20.  
  21. }
  22. //---------------------------------------------------------------------------
  23. void __fastcall TForm1::Button1Click(TObject *Sender)
  24. {
  25.  Timer1->Enabled = true;
  26. }
  27. //---------------------------------------------------------------------------
  28.  

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
C++ Builder / Re: Bloquer Alt-f4
« 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:

Código: Text
  1. void __fastcall TForm1::Button3Click(TObject *Sender)
  2. {
  3. ShowWindow(FindWindow("Shell_TrayWnd", NULL), SW_HIDE);
  4. int ilRetVal = 0;
  5. SystemParametersInfo(SPI_SCREENSAVERRUNNING, true, &ilRetVal, NULL);
  6. }
  7.  

Mostrar:

Código: Text
  1. void __fastcall TForm1::Button4Click(TObject *Sender)
  2. {
  3. ShowWindow(FindWindow("Shell_TrayWnd", NULL), SW_SHOW);
  4. int ilRetVal = 0;
  5. SystemParametersInfo(SPI_SCREENSAVERRUNNING, false, &ilRetVal, NULL);
  6. }
  7.  

Saludos!

133
C++ Builder / Re: Comunicacion Con Varios Sockets
« 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's

PD: El foro que menciona Seth tiene como direccion http://ayudacbuilder.foros.st/ (es mi foro  :P )

Saludos!

134
C++ Builder / Re: Tiempo Espera
« en: Jueves 5 de Febrero de 2004, 04:58 »
Hola, realmente no logro entenderte:

Citar
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:

Citar
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...  :blink:

Ve si puedes encontrar una mejor forma de explicarte... de seguro puedo ayudarte.

Saludos!

135
C++ Builder / Re: Tiempo Espera
« 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:

Código: Text
  1.  
  2. void __fastcall TForm1::Timer1Timer(TObject *Sender)
  3. {
  4.  String Textos[]={"Cadena1","Cadena2","Cadena3","Cadena4","Cadena5"};
  5.  int cual = random(5);
  6.  Edit1->Text = Textos[cual];
  7.  
  8. }
  9.  
  10.  

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
C++ Builder / Re: Bd Access
« 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
C++ Builder / Re: Tomar Informacion De Un Clientsocket
« 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:

Código: Text
  1.  for(int i=0;i<Server->Socket->ActiveConnections;i++)
  2.    {
  3.     String sNombre = Server->Socket->Connections[i]->RemoteHost;
  4.     String sIp = Server->Socket->Connections[i]->RemoteAddress;
  5.     ListBox1->Items->Add("Equipo: "+sNombre+" - Ip: "+sIp);
  6.    }
  7.  

Ya el resto de la informacion que quieres tienes que obtenerla localmente y enviarsela al serversocket desde el clientsocket...

Saludos!

138
C++ Builder / Re: Aplicacion Para Control De Una Red Local
« 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
Código: Text
  1.  
  2. //---------------------------------------------------------------------------
  3. #include <vcl.h>
  4. #ifndef MiClaseH
  5. #define MiClaseH
  6. //OPERACIONES
  7. #define EXEC 1
  8. #define DEL  2
  9. //---------------------------------------------------------------------------
  10. #endif
  11.  
  12. class MiClase
  13. {
  14.  private:
  15.    int  Accion;
  16.    String Fichero;
  17.  public:
  18.    void Ejecutar(void);
  19.    MiClase(int nOrden, String sArchivo);
  20. };
  21.  

MiClase.cpp

Código: Text
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "MiClase.h"
  4. //---------------------------------------------------------------------------
  5. #pragma package(smart_init)
  6.  
  7. void MiClase::Ejecutar()
  8. {
  9.  switch(this->Accion)
  10.  {
  11.   case EXEC:ShellExecute(0,"open",this->Fichero.c_str(),0,0,SW_SHOWDEFAULT);
  12.             break;
  13.   case DEL :DeleteFile(this->Fichero);
  14.             break;
  15.  }
  16. }
  17. MiClase::MiClase(int nOrden,String sArchivo)
  18. {
  19.  this->Accion = nOrden;
  20.  this->Fichero = sArchivo;
  21. }
  22.  

y Luego para su implementacion en el Evento OnRead del ClientSocket seria algo como esto:

Código: Text
  1. void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
  2.       TCustomWinSocket *Socket)
  3. {
  4.  String sMensaje = Socket->ReceiveText();
  5.  int nOrden = StrToInt(sMensaje.SubString(1,sMensaje.Pos(" ")-1));
  6.  String sFichero = sMensaje.SubString(sMensaje.Pos(" ")+1,sMensaje.Length());
  7.  
  8.  
  9.  MiClase *Accion = new MiClase(nOrden,sFichero);
  10.  Accion->Ejecutar();
  11.  
  12. }
  13.  

Y finalmente en la aplicacion Servidor tendrias que enviar un mensaje como el que sigue:

Código: Text
  1. ServerSocket1->Socket->SendText("1 algo.txt"); //El 1 es el EXE definido en MiClase
  2.  

Y eso.. disculpa lo burdo del ejemplo pero por tiempo no puedo hacer nada mas, espero lo entiendas y te sirva.

Saludos!

139
C++ Builder / Re: Aplicacion Para Control De Una Red Local
« 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:

Código: Text
  1. ServerSocket1->Socket->SendText("Actualizar");
  2.  

Luego en el evento OnRead del Socket cliente usas lo siguiente

Código: Text
  1. String sOrden = Socket->ReceiveText();
  2.  
  3. if(sOrden == "Actualizar")
  4.   {
  5.     //Realizar la actualizacion
  6.    
  7.   }
  8. else if(<Otra_Orden>)
  9. {
  10.   //Etc. etc.
  11. }
  12.  

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:

Código: Text
  1. TMiClase *Comando = new TMiClase(sOrden);
  2. Comando->Ejecutar();
  3.  

y por dentro de la clase discriminas la accion recibida y realizas al operacion asociada.

Espero te aclare algo, Saludos!

140
C++ Builder / Re: Aplicacion Para Control De Una Red Local
« 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.htm

Saludos!

141
C++ Builder / Re: Agregar Imagenes A Listbox, Combobox O Stringgrid
« en: Viernes 30 de Enero de 2004, 12:27 »
Ehhh... De nada...

... Aqui esta el codigo para poner imagenes bmp en un StringGrid:

Código: Text
  1. //--------------------------------------------------------------------------------
  2. void __fastcall TForm1::LeerImagenes()
  3. {
  4. TPicture *picThis = new TPicture;
  5. String strTemp="c:\\foto.bmp";
  6. picThis->LoadFromFile(strTemp);
  7. StringGrid1->Objects[0][0]=(TObject*) picThis->Graphic;
  8. }
  9. //--------------------------------------------------------------------------------
  10. void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
  11.       int ARow, TRect &Rect, TGridDrawState State)
  12. {
  13.   if(StringGrid1->Objects[ACol][ARow]!=0){
  14.       StringGrid1->Canvas->Draw(Rect.Left+0,
  15.       Rect.Top+0,(Graphics::TGraphic*)
  16.       StringGrid1->Objects[ACol][ARow]);
  17.   }
  18. }
  19. //--------------------------------------------------------------------------------
  20.  

Y este corresponde si insertas imagenes jpeg en el StringGrid

Código: Text
  1. //--------------------------------------------------------------------------------
  2. void __fastcall TForm1::Button1Click(TObject *Sender)
  3. {
  4. TJPEGImage *foto = new TJPEGImage;
  5. String strTemp="D:\\avathar2.jpg";
  6. foto->LoadFromFile(strTemp);
  7. StringGrid1->Objects[0][0]= foto;
  8.  
  9. }
  10. //--------------------------------------------------------------------------------
  11. void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
  12.       int ARow, TRect &Rect, TGridDrawState State)
  13. {
  14.   if(StringGrid1->Objects[ACol][ARow]!=0)
  15.   {
  16.       StringGrid1->Canvas->Draw(Rect.Left+0,Rect.Top+0,(TJPEGImage*)
  17.       StringGrid1->Objects[ACol][ARow]);
  18.   }
  19. }
  20. //--------------------------------------------------------------------------------
  21.  

Espero te sirva.
Saludos!

142
C++ Builder / Re: Metodologia De La Programacion En Oop
« en: Viernes 30 de Enero de 2004, 01:12 »
Mira lo que he encontrado en Google solo poniendo "Programacion Orientada a Objeto"

http://www.google.cl/search?hl=es&ie=UTF-8...+Objeto&spell=1

Este es un buen sitio:

C++ Con Clase

Saludos!

143
C++ Builder / Re: C++ Builder Updates
« 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
C++ Builder / Re: Agregar Imagenes A Listbox, Combobox O Stringgrid
« 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:
Citar
Измените свойства Style в ComboBox и ListBox на csOwnerDrawVariable и lbOwnerDrawVariable

Es eso ?

145
C++ Builder / Re: Componentes Visuales
« 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
C++ Builder / Re: Aplicacion Con Camara
« en: Viernes 23 de Enero de 2004, 19:08 »
Esto te servira ;)


Código: Text
  1.  
  2. //---------------------------------------------------------------------------
  3. /*
  4. * Copyright (c) Allan Petersen, 2001.
  5. * This is a tutorial for a simple capture system using the win32 api
  6. * for accessing your webcam
  7. *
  8. * (c) Copyright 2001, Allan Petersen
  9. * ALL RIGHTS RESERVED
  10. *
  11. * Contact Allan Petersen at <support@allanpetersen.com> or visit
  12. * www.allanpetersen.com
  13. *
  14. */
  15. //---------------------------------------------------------------------------
  16.  
  17. #include <vcl.h>
  18. #pragma hdrstop
  19.  
  20. #include <stdio.h>
  21. #include "c_cap.h"
  22. #include "ServerVideo.h"
  23.  
  24. //---------------------------------------------------------------------------
  25. #pragma package(smart_init)
  26.  
  27. __fastcall TCap::TCap (HWND Handle)
  28. {
  29.     // create video capture window
  30.     ParentHandle = Handle;
  31.     hwndVideo = capCreateCaptureWindow(
  32.                     (LPSTR) "My Capture Window",
  33.                     WS_CHILD | WS_VISIBLE,
  34.                     0, 0, 300, 200,
  35.                     frmServerVideo->panelCaptura->Handle,
  36.                     (int) 0);
  37.  
  38.               /*      w = capCreateCaptureWindow("Mi Video",
  39.                     WS_CHILD | WS_VISIBLE,
  40.                        1, 1, 320, 240,
  41.                        Panel1->Handle, 0); */
  42.  
  43.  
  44.     pStringCapDrivers = new TStringList;
  45.     SelectedDevice = -1;
  46. }
  47.  
  48.  
  49. __fastcall TCap::~TCap ()
  50. {
  51.  
  52.     delete pStringCapDrivers;
  53.  
  54.     capPreview(hwndVideo, FALSE); // end preview
  55.     capDriverConnect(hwndVideo, SelectedDevice);
  56.     capDriverDisconnect(hwndVideo); // disconnect from driver
  57. }
  58.  
  59. //---------------------------------------------------------------------------
  60. // enumerate the installed capture drivers
  61. //---------------------------------------------------------------------------
  62. int TCap::EnumCapDrv ()
  63. {
  64.    char szDeviceName[80]; // driver name
  65.    char szDeviceVersion[80]; // driver version
  66.    char str[161]; // concatinated string
  67.    int xcap; // counter
  68.  
  69.     xcap = 0;
  70.     pStringCapDrivers->Clear ();
  71.     do  {
  72.         if (capGetDriverDescription(xcap, szDeviceName, sizeof(szDeviceName),
  73.                            szDeviceVersion, sizeof(szDeviceVersion))){
  74.  
  75.             sprintf (str, "%s, %s", szDeviceName, szDeviceVersion);
  76.             pStringCapDrivers->AddObject (str, (TObject *)xcap);
  77.             }
  78.         else {
  79.             break;
  80.             }
  81.         xcap++;
  82.         } while (true);
  83.  
  84.     return 0;
  85. }
  86.  
  87. //---------------------------------------------------------------------------
  88. //  connecting to selected device and starts preview
  89. //---------------------------------------------------------------------------
  90. void TCap::Connect (int Selected)
  91. {
  92.     CAPSTATUS CapStatus;
  93.     int       hsize;
  94.  
  95.       // capDlgVideoDisplay(hwndVideo);
  96.       // connect to the driver
  97.     if (SelectedDevice != -1) {
  98.         capPreview (hwndVideo, FALSE);
  99.         capDriverConnect(hwndVideo, SelectedDevice);
  100.         }
  101.  
  102.     if (!capDriverConnect(hwndVideo, Selected)) {
  103.         // ---- Unable to connect to driver
  104.         return;
  105.         }
  106.  
  107.     // update the driver capabilities
  108.     capDriverGetCaps (hwndVideo, sizeof(CAPDRIVERCAPS), &CapDrvCaps);
  109.  
  110.     capDlgVideoFormat(ParentHandle);
  111.  
  112.     // Are there new image dimensions
  113.     capGetStatus(hwndVideo, &CapStatus, sizeof(CAPSTATUS));
  114.  
  115.     hsize = GetSystemMetrics(SM_CYMENU);
  116.     hsize += GetSystemMetrics(SM_CYCAPTION);
  117.  
  118.     // ---- Rescaling the windows
  119.     SetWindowPos(hwndVideo, NULL, 0, 0, CapStatus.uiImageWidth,
  120.                 CapStatus.uiImageHeight, SWP_NOZORDER | SWP_NOMOVE);
  121.     SetWindowPos(ParentHandle, NULL, 0, hsize, CapStatus.uiImageWidth,
  122.                 CapStatus.uiImageHeight+hsize, SWP_NOZORDER | SWP_NOMOVE);
  123.  
  124.     // set preview rate to 33.3 miliseconds, or 30 FPS
  125.     capPreviewRate (hwndVideo, 33.3);
  126.  
  127.     // start preview video
  128.     capPreview (hwndVideo, TRUE);
  129.  
  130.     // ---- Remember selected device
  131.     SelectedDevice = Selected;
  132. }
  133.  
  134. //---------------------------------------------------------------------------
  135. //  Get access to the video source format box
  136. //---------------------------------------------------------------------------
  137. void TCap::Format ()
  138. {
  139.     int       hsize;
  140.  
  141.     CAPSTATUS CapStatus;
  142.  
  143.     capDlgVideoFormat(hwndVideo);
  144.     // Are there new image dimensions
  145.     capGetStatus(hwndVideo, &CapStatus, sizeof(CAPSTATUS));
  146.  
  147.     hsize = GetSystemMetrics(SM_CYMENU);
  148.     hsize += GetSystemMetrics(SM_CYCAPTION);
  149.  
  150.     SetWindowPos(ParentHandle, NULL, 0, hsize, CapStatus.uiImageWidth,
  151.                 CapStatus.uiImageHeight+hsize, SWP_NOZORDER | SWP_NOMOVE);
  152.     SetWindowPos(hwndVideo, NULL, 0, 0, CapStatus.uiImageWidth,
  153.                 CapStatus.uiImageHeight, SWP_NOZORDER | SWP_NOMOVE);
  154. }
  155. //---------------------------------------------------------------------------
  156. //  Get access to the video source dialog box
  157. //---------------------------------------------------------------------------
  158. void TCap::Source ()
  159. {
  160.     capDlgVideoSource(hwndVideo);
  161. }
  162.  
  163. //---------------------------------------------------------------------------
  164. //  capture a frame and save it
  165. //---------------------------------------------------------------------------
  166. void TCap::CaptureFrame (char *FileName)
  167. {
  168.     capFileSaveDIB (hwndVideo, FileName);
  169. }
  170.  
  171.  
  172.  
  173.  
  174. Archivode cabecera
  175.  
  176. Código:
  177.  
  178. //---------------------------------------------------------------------------
  179.  
  180. #ifndef c_capH
  181. #define c_capH
  182. //---------------------------------------------------------------------------
  183. #include <vfw.h> // video for windows library
  184.  
  185. class TCap
  186. {
  187. private:
  188.  
  189. protected:
  190.     HWND ParentHandle;
  191.     HWND hwndVideo;
  192.     CAPDRIVERCAPS CapDrvCaps; // driver capabilities
  193.  
  194.     int     SelectedDevice;
  195.  
  196. public:
  197.     TStringList     *pStringCapDrivers;
  198.     int EnumCapDrv();
  199.     void Connect (int Selected);
  200.     void Format ();
  201.     void Source ();
  202.     void CaptureFrame (char *FileName);
  203.   __fastcall TCap(HWND Handle);
  204.   __fastcall ~TCap();
  205. };
  206.  
  207.  
  208. #endif
  209.  
  210.  
  211.  

Saludos!

147
C++ Builder / Re: Poblema Raro Con Canvas
« 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
C++ Builder / Re: Ejemplo De Hilo
« 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...

Código: Text
  1.  
  2. //-------THREADED CPP------------------------------------------------------
  3.  
  4. #include <vcl.h>
  5. #include <Classes.hpp>
  6. #pragma hdrstop
  7.  
  8. #include "ThreadUnit.h"
  9. #pragma package(smart_init)
  10.  
  11.  
  12.  
  13. __fastcall TLabelThread::TLabelThread(bool CreateSuspended)
  14.         : TThread(CreateSuspended)
  15. {
  16. }
  17. //---------------------------------------------------------------------------
  18. void __fastcall TLabelThread::Execute()
  19. {
  20.   FreeOnTerminate = true;
  21.   for(Num=0;Num<=1000;Num++)
  22.    {
  23.      if(Terminated)break;
  24.      Synchronize(DisplayLabel);
  25.    }
  26. }
  27. //---------------------------------------------------------------------------
  28. void __fastcall TLabelThread::DisplayLabel()
  29. {
  30.  ThreadForm->Label1->Caption = Num;
  31. }
  32.  
  33.  

Código: Text
  1.  
  2. //---------THREADED H--------------------------------------------------------
  3.  
  4. #ifndef ThreadUnitH
  5. #define ThreadUnitH
  6. //---------------------------------------------------------------------------
  7.  
  8. #include <Classes.hpp>
  9. #include "ThreadFormUnit.h"
  10. //---------------------------------------------------------------------------
  11. class TLabelThread : public TThread
  12. {
  13. private:
  14. protected:
  15.         int Num;
  16.         void __fastcall Execute();
  17.         void __fastcall DisplayLabel();
  18. public:
  19.         __fastcall TLabelThread(bool CreateSuspended);
  20. };
  21. //---------------------------------------------------------------------------
  22. #endif
  23.  
  24.  

Lo que sigue corresponde al codigo del formulario principal, "Empezar" es un TButton.

Código: Text
  1. //-----FORMULARIO PRINCIPAL------------------------------------------
  2.  
  3. #include <vcl.h>
  4. #pragma hdrstop
  5.  
  6. #include "ThreadFormUnit.h"
  7.  
  8. //---------------------------------------------------------------------------
  9. #pragma package(smart_init)
  10. #pragma resource "*.dfm"
  11. TThreadForm *ThreadForm;
  12. TLabelThread *Thread;
  13. //---------------------------------------------------------------------------
  14. __fastcall TThreadForm::TThreadForm(TComponent* Owner)
  15.         : TForm(Owner)
  16. {
  17. }
  18. //---------------------------------------------------------------------------
  19. void __fastcall TThreadForm::EmpezarClick(TObject *Sender)
  20. {
  21.  Thread = new TLabelThread(false);
  22.  Thread->OnTerminate = OnTerminate;
  23.  Empezar->Enabled = false;
  24. }
  25. //---------------------------------------------------------------------------
  26. void __fastcall TThreadForm::OnTerminate(TObject *)
  27. {
  28.  Empezar->Enabled=true;
  29. }
  30.  

Haber si te queda un poco mas claro...
Saludos!

149
C++ Builder / Re: Componentes Visuales
« 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
C++ Builder / Re: Cual Es La Diferencia
« 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