Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-08-2005
reina reina is offline
Miembro
 
Registrado: ago 2005
Ubicación: Capital Federal-La Plata (Bs As)
Posts: 147
Poder: 19
reina Va por buen camino
ventana de mensaje por un tiempo determinado

Hola bueno yo de nuevo..Necesito hacer una funcion que cree una ventana, una ventana de mensaje para mostrar un texto recibido por parametro,tambien recibe un tiempo, es decir recibe como parametro el mensaje y un tiempo, la ventana tiene que estar abierta por esos segundo indicados, si el tiempo es cero la ventana se cerrara cuando se presione cualquier tecla...bueno a ver quien me da una mano..creo que tiene que ver con un temporizador del sistema operativo..pero la verdad no me sale
Responder Con Cita
  #2  
Antiguo 11-08-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Tal vez no te parezca mal usar un componente de nombre TimeForm que puedes encontrar en el paquete DecComp, el cual puedes encontrar a su vez en la sección de componentes de esta misma página Web. Queda que limarle algunas cosillas (digo a TimeForm), pero, puede que te dé ciertas ideas o te sirva, directamente, para lo que pretendes.

Por otro lado revisa este Hilo, que tal vez también te pueda resultar útil.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 11-08-2005
reina reina is offline
Miembro
 
Registrado: ago 2005
Ubicación: Capital Federal-La Plata (Bs As)
Posts: 147
Poder: 19
reina Va por buen camino
tks por la ref al hilo

si ..esos componentes no sé si me sirven...porque estoy trabajando con delphi 2005...de todas maneras uso solo lo de delphi comun..tks por la data..el hilo ese que me indicaste por ahi si..pero ahora estoy peleando con otra cosa(regvariante), despues me ocupare de la ventanita..byee
Responder Con Cita
  #4  
Antiguo 12-08-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por reina
(...) esos componentes no sé si me sirven...porque estoy trabajando con delphi 2005... (...)
Sí; puedes instalarlos en Delphi 2005, aunque no cuentes con un paquete específico para esa versión de Delphi, puedes usar el único que hay para Delphi 7. No creo que tuvieras demasiados problemas.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 12-08-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
A ver si te sirve....
Archivos Adjuntos
Tipo de Archivo: zip WaitDlg.zip (2,0 KB, 76 visitas)
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #6  
Antiguo 16-08-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
100% Api, como hablamos fuera de los foros:
Código Delphi [-]
procedure WaitDialog(const AText: PChar; ATimeOut: Cardinal = 5000);
var
  wcClass: Windows.TWndClass;
  hHandle: HWND;
  Msg: TMsg;
  hCanvas: HDC;
  hFnt, hOldFont: HFONT;
  hTimer: UINT;
  R: TRect;
  L: Cardinal;
begin
  L := StrLen(AText);
  ZeroMemory(@wcClass, SizeOf(TWndClass));
  with wcClass do
  begin
    Style := CS_CLASSDC;
    hInstance := SysInit.HInstance;
    lpszClassName := 'WaitDlg';
    lpfnWndProc := @DefWindowProc;
    hbrBackGround := CTLCOLOR_MSGBOX+1;
  end;
  Windows.RegisterClass(wcClass);

  { Crea la ventana }
  hHandle := Windows.CreateWindowEx(WS_EX_TOOLWINDOW, wcClass.lpszClassName,
               nil, WS_POPUP or WS_BORDER, 0, 0, 100, 100, 0, 0,
               wcClass.hInstance, nil);

  if hHandle = 0 then
    RaiseLastOSError
  else
    try
      hCanvas := GetWindowDc(hHandle);
      { Crea la fuente }
      hFnt := CreateFont(-1, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET,
                     OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
                     DEFAULT_PITCH + FF_DONTCARE, 'MS Sans Serif');
      hOldFont := SelectObject(hCanvas, hFnt);
      try
        { Calcula el tamaño del texto }
        SetRectEmpty(R);
        R.Right := GetSystemMetrics(SM_CXSCREEN);
        DrawText(hCanvas, AText, L, R, DT_CALCRECT + DT_CENTER + DT_WORDBREAK);

        { Para que no escriba sobre el Borde }
        InflateRect(R, 2, 2);

        SetBkMode(hCanvas, TRANSPARENT);

        SetWindowPos(hHandle, 0,
                     (GetSystemMetrics(SM_CXSCREEN) - R.Right) div 2,
                     (GetSystemMetrics(SM_CYSCREEN) - R.Bottom) div 2,
                     R.Right, R.Bottom, 0);

        { Crea el timer que disparará el evento WM_TIMER cada ATimeOut milisegundos }
        hTimer := SetTimer(hHandle, 1, ATimeOut, nil);
        try
          ShowWindow(hHandle, SW_SHOW);
          while GetMessage(Msg, hHandle, 0, 0) do
          begin
            TranslateMessage(Msg);
            case Msg.message of
              WM_PAINT:
              begin
                GetClientRect(Msg.hwnd, R);
                OffsetRect(R, 1, 1);
                DrawText(hCanvas, PChar(AText), Length(AText), R, DT_WORDBREAK + DT_CENTER + DT_NOCLIP);
                DispatchMessage(Msg);
              end;
              WM_CLOSE, WM_DESTROY, WM_KEYDOWN, WM_TIMER, WM_RBUTTONDOWN:
              begin
                KillTimer(hHandle, hTimer);
                hTimer := 0;
                Break; {WM_QUIT}
              end;
              else
                DispatchMessage(Msg);
              end;
          end;
        finally
          if hTimer <> 0 then
            KillTimer(hHandle, hTimer);
        end;
      finally
        SelectObject(hCanvas, hOldFont);
        DeleteObject(hFnt);
      end;
    finally
      DestroyWindow(hHandle);
    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  WaitDialog(PChar(Memo1.Lines.Text));
end;
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #7  
Antiguo 16-08-2005
Antuan Antuan is offline
Miembro
 
Registrado: jul 2005
Ubicación: Madrid
Posts: 73
Poder: 19
Antuan Va por buen camino
Antuan

He probado la funcion y es muy chula, como sabeis sigo novato y se podria hacer que ese mensaje que depende del texto que pongamos en el memo.
Sea un mensaje que este incluido en el codigo de la funcion y que aparezca cada ciero tiempo.
Supongo que sera pedir mucho.
Gracias
Responder Con Cita
  #8  
Antiguo 16-08-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
No te entiendo... ¿Quieres "hardcodear" el parámetro de la función?.. si puedes hacerlo, remplaza el parámetro por una constante!

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #9  
Antiguo 16-08-2005
Antuan Antuan is offline
Miembro
 
Registrado: jul 2005
Ubicación: Madrid
Posts: 73
Poder: 19
Antuan Va por buen camino
Reemplazado y funciona

Bueno es que lo quiero hacer a lo mejor es muy complicado
No es mas que la misma funcion se ejecutara cada cierto tiempo.
Yo ya tengo hecho algo en un formulario y el mensaje de ejecuta cada cierto tiempo. Pero esto no me sirve para una DLL que estoy haciendo
Pero como he visto que la funcion WaitDialog tiene incluido el timer y presenta el mensaje y luego lo borra.
Pues esa funcion me vendria bien siempre que se ejecute cada cierto tiempo para incluirla en la DLL.
Muchas gracias por tu informacion.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 02:33:43.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi