Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Impadron.

No he usado los BalloonTip ni en Delphi ni en Builder C++. La primera traducción que intenté no me resultó:
Código:
typedef struct tagEDITBALLOONTIP {
    DWORD cbStruct;
    LPCWSTR pszTitle;
    LPCWSTR pszText;
    INT ttiIcon;
} EDITBALLOONTIP, *PEDITBALLOONTIP;

void __fastcall TForm1::Button1Click(TObject *Sender) {
EDITBALLOONTIP ebt;
  ebt.cbStruct = sizeof(EDITBALLOONTIP);
  ebt.pszTitle = (wchar_t *)"B es mayor que C";
  ebt.pszText  = (wchar_t *)"TODO: EXPLICAR POR QUE B NO PUEDE SER MAYOR QUE C";
  ebt.ttiIcon  = TTI_INFO;
  SendMessage(Edit1->Handle, EM_SHOWBALLOONTIP, 0, (LPARAM) &ebt);
}
Sin embargo, de este modo logré el efecto:
Código:
void ShowBalloonTip(TWinControl *Control,int  Icon, char *Title,  char *Text, 
  TColor BackColor, TColor TextColor) {
HWND hWndTip;
TOOLINFO ti;
HWND hWnd;
TPoint p;
  p.x = Control->Left + Control->Width - 5;
  p.y = Control->Top + 5;
  Mouse->CursorPos = Control->Parent->ClientToScreen(p);
  hWnd    = Control->Handle;
  hWndTip = CreateWindow(TOOLTIPS_CLASS, NULL, WS_POPUP | TTS_NOPREFIX | 
    TTS_BALLOON | TTS_ALWAYSTIP, 0, 0, 0, 0, hWnd, 0, HInstance, NULL);
  if( hWndTip ) {
    SetWindowPos(hWndTip, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE | 
      SWP_NOMOVE | SWP_NOSIZE);
    ti.cbSize = sizeof(ti);
    ti.uFlags = TTF_CENTERTIP | TTF_TRANSPARENT | TTF_SUBCLASS;
    ti.hwnd = hWnd;
    ti.lpszText = Text;
    GetClientRect(hWnd, &ti.rect);
    SendMessage(hWndTip, TTM_SETTIPBKCOLOR, BackColor, 0);
    SendMessage(hWndTip, TTM_SETTIPTEXTCOLOR, TextColor, 0);
    SendMessage(hWndTip, TTM_ADDTOOL, 1, (int) &ti);
    SendMessage(hWndTip, TTM_SETTITLE, Icon % 4, (int)Title);
  }
}

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) {
 if (Key < '0' || Key > '5') {  // evaluación trivial
  ShowBalloonTip(Edit1, 1, "ERROR", "Sólo números del 0 al 5", clYellow, clBlack);
  Key = 0;
  }
}
...
Aunque dada mi inexperiencia con los BalloonTip, seguramente te darán una mejor propuesta.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 24-02-2012 a las 02:32:12.
Responder Con Cita
  #2  
Antiguo 23-02-2012
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Sin embargo, de este modo logré el efecto:
Pues de ese modo definitivamente se logra sin problemas

Cita:
Empezado por Chris Ver Mensaje
(...) al asignar Key := 0 en el evento OnkeyPress ya no deja al usuario continuar cuando algo está mal.(...)
Esa es exactamente la idea, solucionar el problema sin necesidad de la interacción del usuario, salvo la notificacion del globito.

Cita:
Empezado por roman Ver Mensaje
Yo creo que aquí estamos más bien hablando de dos estrategias de validación de datos: validar en cada campo o validar todos los campos al final.
Si definitivamente es así y dado este caso prefiero validar en el momento.

muchas gracias a todos por su ayuda
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como usar RANDOMIZE yessika19 Varios 6 24-10-2018 12:20:13
como usar una imagen como boton? negrokau Varios 5 20-05-2011 16:54:26
como usar tabcontrol??? RedVenom Varios 6 03-04-2011 20:26:17
Balloontip con icono propio, se puede? Cheerpipe API de Windows 2 21-04-2009 18:26:14
Cómo usar una dll masetru Varios 1 20-12-2003 14:15:50


La franja horaria es GMT +2. Ahora son las 19:42:29.


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