• Viernes 19 de Abril de 2024, 16:06

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] 2 3 ... 11
1
C++ Builder / Re: Aplicación Remota
« en: Martes 23 de Mayo de 2006, 03:17 »
No se si sea lo mas elegante pero podrias utilizar un TServerSocket y un TClientSocket para enviar un "mensaje" a la otra máquina ...

Dale un vistazo al directorio de ejemplos de BCB ... ahí aparece un ejemplo de como enviar texto de un equipo a otro...  podrias enviar un texto diciendo con el nombre y la ruta del archivo a ejecutar y en la maquina que reciba esto la ejecutas con ShellExecute ... trata de ver si puedes hacerlo, sino te doy un ejemplo ya en código.

SAludos!

2
C++ Builder / Re: Copiar Al Portapapel Una Impresión De Pantalla
« en: Lunes 15 de Mayo de 2006, 22:01 »
No hay problema... para eso estamos ;)

3
C++ Builder / Re: Crear Instaladores
« en: Jueves 11 de Mayo de 2006, 17:23 »
Tambien tienes alternativas gratuitas y bastante buenas como por ejemplo InnoSetup en el que puedes crear Scripts de Instalación, lo puedes encontrar acá:

http://www.jrsoftware.org/isinfo.php

Pero como dije anteriormente es un Script el que debes hacer, pero aca te dejo la url de una utilidad que te permite crear el script utilizando opciones visuales.. se llama IsTool

http://www.istool.org/

Espero te sirva..

Saludos.

4
C++ Builder / Re: Como Mandar Un E-mail
« en: Jueves 11 de Mayo de 2006, 17:20 »
Hola, acá te dejo un código que encontré hace algun tiempo, pertenece a _Leo del ClubBuilder y esta bastante bueno...

Saludos!

Citar
//---------------------------------------------------------------------------
// _Leo Software '2003                                 
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include <memory>
#include "Unit1.h"


//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;


//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}


//---------------------------------------------------------------------------
void __fastcall TForm1::EnviarComando(String cmd, int resp, bool cr)
{
    memoConversacion->Lines->Add(">> " + cmd);

    if (cr)
        Powersock1->Writeln(cmd);
    else
        Powersock1->Write(cmd);

    String respuesta;
    do
    {
        respuesta = Powersock1->ReadLn();
        memoConversacion->Lines->Add("<< " + respuesta);

        if (respuesta.Pos(resp) != 1)
            throw Exception("Error :: " + cmd);
    } while (respuesta[4] == '-');
}


//---------------------------------------------------------------------------
String __fastcall TForm1::CodificarBase64(String str)
{
    std::auto_ptr<TStringStream> is(new TStringStream(str));
    std::auto_ptr<TStringStream> os(new TStringStream(""));

    NMUUProcessor1->InputStream  = is.get();
    NMUUProcessor1->OutputStream = os.get();
    NMUUProcessor1->Method = uuMime;
    NMUUProcessor1->Encode();

    return os->DataString;
}


//---------------------------------------------------------------------------
void __fastcall TForm1::EnviarCorreo(String smtp, String usuario,
    String clave, String de, String para, String asunto, String mensaje)
{
    Powersock1->Host = smtp;
    Powersock1->Port = 25;

    if (Powersock1->Connected)
        Powersock1->Disconnect();

    Powersock1->Connect();
    if (!Powersock1->Connected)
        throw Exception("No se pudo conectar");

    String respuesta = Powersock1->ReadLn();
    memoConversacion->Lines->Add(respuesta);
    if (respuesta.Pos("220") != 1)
        throw Exception("Error al conectar");

    EnviarComando("ehlo " + usuario);
    EnviarComando("rset");

    EnviarComando("auth LOGIN", 334);
    EnviarComando(CodificarBase64(usuario), 334, false);
    EnviarComando(CodificarBase64(clave), 235, false);

    EnviarComando("mail from:" + de);
    EnviarComando("rcpt to:" + para);

    EnviarComando("data", 354);
    String cabecera = "Subject: " + asunto + "\r\n"
                      "To: "      + para   + "\r\n"
                      "From: "    + de     + "\r\n";
    EnviarComando(cabecera + "\r\n" + mensaje + "\r\n.");

    EnviarComando("Quit", 221);
    Powersock1->Disconnect();
}


//---------------------------------------------------------------------------

void __fastcall TForm1::btnEnviarClick(TObject *Sender)
{
    try
    {
        btnEnviar->Enabled = false;
        EnviarCorreo(edtServidor->Text, edtUsuario->Text, edtClave->Text,
            edtDeNombre->Text + "<" + edtDeCorreo->Text + ">",
            edtParaNombre->Text + "<" + edtParaCorreo->Text + ">",
            edtAsunto->Text, memoMensaje->Text);
    }
    __finally
    {
        btnEnviar->Enabled = true;
    }
}
//---------------------------------------------------------------------------

5
C++ Builder / Re: Limitar Teclas En Edits.
« en: Jueves 11 de Mayo de 2006, 17:09 »
Creo que esto lo haría un poco mejor, ya que solo permites el ingreso de numeros, comas, puntos y el signo de negativo...  Solo debes incluir la siguiente unidad:

#include <idglobal.hpp> // Para la IsNumeric

Código: Text
  1. void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
  2. {
  3.   if(! IsNumeric(Key) && ((Key != '.') && (Key!=',') && (Key!='-')))
  4.      Key = 0;
  5.  
  6. }
  7.  

Saludos!!

6
C++ Builder / Re: Copiar Al Portapapel Una Impresión De Pantalla
« en: Martes 9 de Mayo de 2006, 22:37 »
Buenas, para guardar una "impresión" del escritorio en un jpg por ejemplo se hace de la siguiente manera:

Código: Text
  1.  
  2. HDC dc = GetDC(0);
  3. Graphics::TCanvas *ScreenCanvas = new Graphics::TCanvas;
  4. ScreenCanvas-&#62;Handle = dc;
  5.  
  6. TJPEGImage *JImage = new TJPEGImage;
  7. Image1-&#62;Picture-&#62;Bitmap-&#62;Width = Screen-&#62;Width;
  8. Image1-&#62;Picture-&#62;Bitmap-&#62;Height= Screen-&#62;Height;
  9. TRect rect = Rect(0,0,Screen-&#62;Width, Screen-&#62;Height);
  10. Image1-&#62;Picture-&#62;Bitmap-&#62;Canvas-&#62;CopyRect(rect,   ScreenCanvas, rect);
  11. JImage-&#62;Assign(Image1-&#62;Picture-&#62;Graphic);
  12. JImage-&#62;CompressionQuality = 19;
  13. JImage-&#62;Compress();
  14.  
  15. JImage-&#62;SaveToFile(&#34;cap.jpg&#34;);
  16.  

Cualquier duda ya empezaré a revisar nuevamente el foro más seguido. Saludos

7
C++ Builder / [Código Fuente] Mis disculpas
« en: Martes 1 de Marzo de 2005, 03:05 »
He leido sus comentarios... y ya encontre el problema, pero en estos momentos estoy hasta el cuello con trabajo apenas pueda lo publico corregido...

Saludos y mis disculpas...

8
C++ Builder / Re: Agregar Items
« en: Lunes 28 de Febrero de 2005, 19:36 »
Mira... este codigo crea items en un MainMenu, y asigna un evento on click

Código: Text
  1.  
  2. void __fastcall TForm1::Button1Click(TObject *Sender)
  3. {
  4.   TMenuItem *Nuevo = new TMenuItem(MainMenu1);
  5.   Nuevo-&#62;Caption = &#34;Insertado&#34; + IntToStr(random(100));
  6.   Archivo1-&#62;Add(Nuevo);
  7.   Nuevo-&#62;OnClick = MiOnClick;
  8.  
  9. }
  10.  
  11. void __fastcall TForm1::MiOnClick(TObject *Sender)
  12. {
  13.  ShowMessage(&#34;Click en item creado&#34;);
  14.  
  15. }
  16.  
  17.  
  18.  

Ojo que el evento MiOnClick debe ser declarado dentro de la clase TForm1, es decir:

Código: Text
  1.  
  2. public:    // User declarations
  3.         __fastcall TForm1(TComponent* Owner);
  4.         void __fastcall MiOnClick(TObject *Sender);
  5.  
  6.  


Creo que con esto puedes partir.... ademas... creo que en el directorio de ejemplos hay un ejemplo de un editor usando MDI... y que hace lo que tu quieres... no te lo puedo confirmar pq no tengo cbuilder instalado aca...

Saludos! espero te sirva.

9
C++ Builder / Re: Dbgrid Forzar Un Contenido
« en: Lunes 28 de Febrero de 2005, 19:21 »
Hola, prueba algo como esto, donde cy, cy son las coordenadas en las que se imprimira el texto, tambien podrias usar TextOut.

Código: Text
  1. grid-&#62;Canvas-&#62;TextRect(Rect,cx,cy,&#34;Texto&#34;);
  2.  

Eso te servira para empezar... Saludos...

10
C++ Builder / Re: Consulta Basica
« en: Lunes 28 de Febrero de 2005, 19:11 »
Eso lo que hace es encontrar los objetos que correspondan a x nombre, como bien dices ....Pero no creo que sea a eso a lo que se refiere con su consulta...  el , por lo que entiendo, quiere hacer algo como esto, TENIENDO CLARO QUE LA INSTRUCCION WITH NO EXISTE EN C++. Es solo a modo de ejemplo.



Código: Text
  1. With Edit1
  2.  
  3.       Text = &#34;Texto&#34;;
  4.       Top = 0;
  5.       Left = 0;
  6.  
  7.  
  8. end with
  9.  
  10.  
  11.  

Es decir resumir un poco el codigo para un objeto y acceder directamente a sus propiedades sin tener que especificar en cada linea el objeto, es decir ahorrarse esto:

Código: Text
  1.  
  2.      Edit1-&#62;Text = &#34;Texto&#34;;
  3.      Edit1-&#62;Top = 0;
  4.      Edit1-&#62;Left = 0;
  5.  
  6.  


Bueno eso... saludos...

11
C++ Builder / Re: Redimensionar Ventana
« en: Viernes 25 de Febrero de 2005, 02:05 »
Solo tienes que capturar el mensaje correcto recibido por tu aplicacion... en este caso.. haciendo un seguimiento con Winsight... la herramienta de borland destinada a esto logre lo siguiente...

Solo debes agregar un TApplicationEvents desde la paleta Additional he implementar en el evento OnMessage del mismo el siguiente codigo:

Código: Text
  1. void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
  2.       int X, int Y)
  3. {
  4.  Height = 150;
  5. }
  6. // ACA DEBES IMPLEMENTAR
  7. //---------------------------------------------------------------------------
  8.  
  9. void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
  10.       bool &Handled)
  11. {
  12.  if( Msg.message == 160)
  13.  {
  14.   Height = 50;
  15.  }
  16. }
  17. //--------------------------------------------------------------
  18. -------------
  19.  
  20.  

Saludos y espero te sirva...

12
C++ Builder / Re: Lista Con Combox
« en: Viernes 25 de Febrero de 2005, 01:49 »
Para un ComboBox sobre un StringGrid puedes hacer lo siguiente

Agrega un StringGrid y un ComboBox... a este ultimo agregale los siguientes items...

"soltero"
"casado"
"separado"
"viudo"

He implemente el siguiente codigo:

Código: Text
  1.  
  2. //---------------------------------------------------------------------------
  3. #include &#60;vcl.h&#62;
  4. #pragma hdrstop
  5.  
  6. #include &#34;Unit1.h&#34;
  7. //---------------------------------------------------------------------------
  8. #pragma package(smart_init)
  9. #pragma resource &#34;*.dfm&#34;
  10. TForm1 *Form1;
  11. //---------------------------------------------------------------------------
  12. __fastcall TForm1::TForm1(TComponent* Owner)
  13.     : TForm(Owner)
  14. {
  15. }
  16. //---------------------------------------------------------------------------
  17. void __fastcall TForm1::FormCreate(TObject *Sender)
  18. {
  19.     StringGrid1-&#62;Cells[0][0] = &#34;Nombre&#34;;
  20.     StringGrid1-&#62;Cells[1][0] = &#34;Apellido&#34;;
  21.     StringGrid1-&#62;Cells[2][0] = &#34;Sexor&#34;;
  22.     StringGrid1-&#62;Cells[3][0] =  &#34;Estado civil&#34;;
  23.     StringGrid1-&#62;Cells[4][0] = &#34;Email&#34;;
  24.     StringGrid1-&#62;Cells[5][0] = &#34;Fono P.&#34;;
  25.     StringGrid1-&#62;Cells[6][0] = &#34;Celular&#34;;
  26.     StringGrid1-&#62;Cells[7][0] = &#34;Otro&#34;;    
  27. }
  28. //---------------------------------------------------------------------------
  29. void __fastcall TForm1::StringGrid1Click(TObject *Sender)
  30. {
  31.     if( StringGrid1-&#62;Col == 3 )
  32.     {
  33.         TRect Recto     = StringGrid1-&#62;CellRect(StringGrid1-&#62;Col, StringGrid1-&#62;Row);
  34.         ComboBox1-&#62;Top  = StringGrid1-&#62;Top;
  35.         ComboBox1-&#62;Left = StringGrid1-&#62;Left;
  36.         ComboBox1-&#62;Top  = ComboBox1-&#62;Top + Recto.Top + StringGrid1-&#62;GridLineWidth;
  37.         ComboBox1-&#62;Left = ComboBox1-&#62;Left + Recto.Left + StringGrid1-&#62;GridLineWidth + 1;
  38.         ComboBox1-&#62;Height = (Recto.Bottom - Recto.Top) + 1;
  39.         ComboBox1-&#62;Width  = Recto.Right - Recto.Left;
  40.         ComboBox1-&#62;Visible = True;
  41.     }
  42.     else
  43.         ComboBox1-&#62;Visible = False;
  44. }
  45. //---------------------------------------------------------------------------
  46. void __fastcall TForm1::ComboBox1Change(TObject *Sender)
  47. {
  48.     StringGrid1-&#62;Cells[StringGrid1-&#62;Col][StringGrid1-&#62;Row] =
  49.      ComboBox1-&#62;Items-&#62;Strings[ComboBox1-&#62;ItemIndex];
  50. }
  51. //---------------------------------------------------------------------------
  52.  
  53.  
  54.  


Saludos... Espor te sirva...

13
C++ Builder / Re: Validar Campos De Un Formulario
« en: Jueves 24 de Febrero de 2005, 01:09 »
Código: Text
  1. __fastcall TForm1::TForm1(TComponent* Owner)
  2.      : TForm(Owner)
  3. {
  4.     LONG dwStyle = GetWindowLong(Edit1-&#62;Handle, GWL_STYLE);
  5.  
  6.     SetWindowLong(Edit1-&#62;Handle, GWL_STYLE, dwStyle | ES_NUMBER);
  7. }
  8.  
  9.  

Saludos!

14
C++ Builder / Re: Consulta Basica
« en: Jueves 24 de Febrero de 2005, 01:07 »
Segun mis conocimientos no existe una instruccion equivalente...  aunque la he usado pero en Delphi.

Saludos y siento no poder ayudarte mas...

15
C/C++ / Re: Conocer La Mac Address De Tu Pc
« en: Jueves 24 de Febrero de 2005, 00:59 »
Codigo correcto, mis disculpas: :P

Código: Text
  1. void GetMac(TStrings* pslStrings)
  2. {
  3.  int ilRetVal = 0;  
  4.  NCB stNetCtrlBlock;
  5.  LPVOID pASTAT;
  6.  ASTAT stAdapterStatus;  
  7.  LANA_ENUM stLanEnum;
  8.  
  9.  
  10.  if(pslStrings != NULL) pslStrings-&#62;Clear();
  11.  
  12.  memset(&stNetCtrlBlock, 0, sizeof(stNetCtrlBlock));
  13.  stNetCtrlBlock.ncb_command = NCBENUM;
  14.  stNetCtrlBlock.ncb_buffer = (UCHAR *)&stLanEnum;
  15.  stNetCtrlBlock.ncb_length = sizeof(stLanEnum);
  16.  Netbios(&stNetCtrlBlock);
  17.  ilRetVal = stLanEnum.length;
  18.  
  19.  if(pslStrings != NULL)
  20.  {
  21.    for(int ilAdapter=0; ilAdapter &#60; ilRetVal; ilAdapter++)
  22.    {
  23.      memset(&stNetCtrlBlock, 0, sizeof(stNetCtrlBlock));
  24.      stNetCtrlBlock.ncb_command = NCBRESET;
  25.      stNetCtrlBlock.ncb_lana_num =   stLanEnum.lana[ilAdapter];
  26.      Netbios(&stNetCtrlBlock);
  27.      memset( &stNetCtrlBlock, 0, sizeof(stNetCtrlBlock) );
  28.      stNetCtrlBlock.ncb_command = NCBASTAT;
  29.      stNetCtrlBlock.ncb_lana_num =   stLanEnum.lana[ilAdapter];
  30.      strcpy(stNetCtrlBlock.ncb_callname,&#34;*               &#34;);
  31.      stNetCtrlBlock.ncb_length = sizeof(stAdapterStatus);
  32.  
  33.      pASTAT=HeapAlloc(GetProcessHeap(),HEAP_GENERATE_EXCEPTIONS|
  34.        HEAP_ZERO_MEMORY, stNetCtrlBlock.ncb_length);
  35.  
  36.      if(pASTAT != NULL)
  37.      {
  38.        stNetCtrlBlock.ncb_buffer=(UCHAR *)pASTAT;
  39.        Netbios(&stNetCtrlBlock);
  40.        CopyMemory(&stAdapterStatus,stNetCtrlBlock.ncb_buffer,
  41.          sizeof(stAdapterStatus));
  42.        AnsiString slMacAddress;
  43.        for(int i =0; i &#60; 6; i++)
  44.        {
  45.          slMacAddress +=IntToHex(stAdapterStatus.
  46.            adapt.adapter_address[i],2);
  47.          if(i&#60;5) slMacAddress+=&#34;-&#34;;
  48.        }
  49.        HeapFree(GetProcessHeap(),0,pASTAT);
  50.        pslStrings-&#62;Add(slMacAddress);
  51.      }
  52.      else ilRetVal = 0;
  53.    }
  54.  }
  55.  
  56.  
  57.  
  58. }
  59.  

Las direcciones MAC de todas las Tarjetas de red presentes en el pc quedan en la lista de Strings recibida por parametros...

Saludos...

16
C++ Builder / Re: Reproductor De Audio Y Video
« en: Sábado 13 de Noviembre de 2004, 23:09 »
El TMediaPlayer tiene un propiedad llamada DisplayRect, a la q debes asignar una estructura del tipo TRect, con eso acomodas el tamaño del video ....

Saludos!

17
C++ Builder / Re: Como Usar Server/cliente Sockets??
« en: Jueves 11 de Noviembre de 2004, 20:16 »
Mira en el directorio de examples de Cbuilder...

Examples\Internet\Chat\

Ahi tienes un ejemplo hecho...

PD: Seria mucho mejor .. si miraramos la ayuda, o los mismos ejemplos q tiene el compilador... muchas preguntas se responden solas ahi mismo.
Saludos ;)

18
C++ Builder / Re: Error Copiando Directorios
« en: Jueves 11 de Noviembre de 2004, 20:10 »
Código: Text
  1. sPath = IncludeTrailingPathDelimiter(sPath);
  2.  

Eso te agrega el delimitador al final ;)
Saludos!

19
C++ Builder / Re: Reproductor De Audio Y Video
« en: Jueves 11 de Noviembre de 2004, 20:05 »
En la paleta System aparece el componente TMediaPlayer tambien en su ayuda tiene casi todo hecho...

Saludos!

20
C++ Builder / Re: Podran Resolverlo???? C++
« en: Jueves 11 de Noviembre de 2004, 20:04 »
mira aca... busca la sobrecarga de operadores...

C Con Clase

Tienen ejemplos bastante sencillo sy claros de entender... solo tienes q modelar una matriz dentro de una clase... (sencillisimo) y sobrecargar los operadores que necesites.. en este caso el operador "*"

Saludos!

21
C++ Builder / Re: Mandar Mails
« en: Jueves 11 de Noviembre de 2004, 20:01 »
Cita de: "Joss"
Acabo de conocer este foro.
Por lo que veo, hay mucha gente que pregunta y poca que responde, a los que ademas, tampoco se les agradece la ayuda.
No me extraña la falta de respuestas.

Saludos.
;)

En cuando a la duda ... mira en la ayuda el componente TNMSmtp... de CBuilder, en la paleta "FastNet" si usas la version 5 o 6, de lo contrario esta ubicada en la paleta "Internet". Tiene un ejemplo hecho..

Saludos!

PD: Otra opcion seria usar el componente PowerSock.

22
C++ Builder / Re: Numeros De Linea En Memo
« en: Martes 12 de Octubre de 2004, 07:50 »
Hola prueba con algo como esto:

Código: Text
  1. void __fastcall TForm1::Memo1KeyDown(TObject *Sender, WORD &Key,
  2.       TShiftState Shift)
  3. {
  4.  Caption =  IntToStr(Memo1-&#62;CaretPos.x) + &#34;:&#34; + IntToStr(Memo1-&#62;CaretPos.y);
  5.  
  6. }
  7.  

Pero te recomiendo que captures el Mensaje de windows a la aplicacion, es un proceso mas transparente, para eso fijate en la ayuda del evento OnMessage de TApplication. Ahora no tengo mucho tiempo, si no te basta lo puesto anteriormente tratare de hacerte un ejemplo...

Saludos!

23
C++ Builder / Re: Gramaticas Libres De Contexto
« en: Lunes 11 de Octubre de 2004, 06:13 »
Te respondi de acuerdo a las recomendaciones que da el mismo solocodigo:

Recomendaciones antes de postear

Saludos!

24
C++ Builder / Re: Gramaticas Libres De Contexto
« en: Lunes 11 de Octubre de 2004, 00:26 »
Cita de: "ellerysammy"
que me enviaran el programa al correo ellery_sammy@yahoo.es
No puedes pedir que te hagan el trabajo completo hombre !!!!

 &lt;_&lt;

Saludos!

25
C++ Builder / Re: Como Eliminar Directorio No Vacio.
« en: Domingo 10 de Octubre de 2004, 04:04 »
Ve si esto te sirve... lo acabo de probar y va perfecto...

Código: Text
  1. void __fastcall TForm1::BorraCarpetas(AnsiString Dir)
  2. {
  3. SHFILEOPSTRUCT sfos;
  4. AnsiString log;
  5. char *lpMsgBuf;
  6. bool seacabo = false;
  7.  
  8.  
  9. ZeroMemory(&sfos, sizeof(sfos));
  10. sfos.hwnd = NULL;
  11. sfos.wFunc = FO_DELETE;
  12.  
  13. Dir.SetLength(Dir.Length()+1);
  14. Dir[Dir.Length()] = '&#092;0';
  15. sfos.pFrom = Dir.c_str();
  16.  
  17.  
  18. sfos.fFlags = FOF_NOCONFIRMMKDIR | FOF_NOCONFIRMATION;
  19. if(SHFileOperation(&sfos) != 0)
  20. {
  21.  FormatMessage(
  22.  FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
  23.  NULL,
  24.  GetLastError(),
  25.  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
  26.  (LPTSTR) &lpMsgBuf,
  27.  0,NULL);
  28.  LocalFree( lpMsgBuf );
  29. }
  30. else
  31.   ShowMessage(log);
  32.  
  33. }
  34.  

Saludos!

Páginas: [1] 2 3 ... 11