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 12-08-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
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
  #2  
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.939
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
  #3  
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.939
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
  #4  
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
  #5  
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.939
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
  #6  
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 21:09:07.


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