Ir para conteúdo
Fórum Script Brasil

Thales Pontes Martins

Membros
  • Total de itens

    453
  • Registro em

  • Última visita

Tudo que Thales Pontes Martins postou

  1. você pode também processar a menssagem WM_ACTIVATE. Se sua janela recebe essa mensagem com Low WParam igual a WA_ACTIVE ou WA_CLICKACTIVE então não passe essa mensagem ao WindowProc da janela e mande uma mensagem WM_ACTIVATE para o handle indicado em LParam com Low WParam igual a WA_CLICKACTIVE, High WParam igual a 0 e LParam igual ao handle da sua janela. dessa forma sua janela nunca terá foco. Mate a mensagem WM_ACTIVATEAPP por via das dúvidas também.
  2. Transformando mensagens do Windows em string: Essa unit possui uma função que recebe um identificador de mensagem do Windows tipo WM_TIMER, WM_PAINT, WM_LBUTTONDOWN, WM_NCHITTEST e transforma numa string igual ao nome do identificador de sua constante para que você possa imprimir no form e saber de que mensagem se trata sem ter que consultar a documentação. Isso é muito útil no caso de você estar escrevendo um código que lida muito com as mensagens e precisa fazer Debug, aí você pode ir vendo todas as mensagens que são enviadas a cada evento que ocorre e saber exatamente porque as coisas estão acontecendo. Foi muito útil pra mim porque estava apanhando para resolver erros intermitentes num componente, e com esse código resolví com muita facilidade. Estou postando porque eu precisei e tive que escrever, na verdade tive que escrever um programa que escreveu a unit automaticamente, porque eu não iria escrever isso tudo no braço não. O computador pode muito bem escrever código de trabalho braçal sozinho. Bom, eu precisei e tive que fazer, mas agora quem precisar pode pegar aqui se quiser. Aí vai -> unit UMessageStr; interface Function MesToStr(ms : integer) : string; implementation uses messages, sysutils; Function MesToStr(ms : integer) : string; begin case ms of WM_NULL : Result:='WM_NULL'; WM_CREATE : Result:='WM_CREATE'; WM_DESTROY : Result:='WM_DESTROY'; WM_MOVE : Result:='WM_MOVE'; WM_SIZE : Result:='WM_SIZE'; WM_ACTIVATE : Result:='WM_ACTIVATE'; WM_SETFOCUS : Result:='WM_SETFOCUS'; WM_KILLFOCUS : Result:='WM_KILLFOCUS'; WM_ENABLE : Result:='WM_ENABLE'; WM_SETREDRAW : Result:='WM_SETREDRAW'; WM_SETTEXT : Result:='WM_SETTEXT'; WM_GETTEXT : Result:='WM_GETTEXT'; WM_GETTEXTLENGTH : Result:='WM_GETTEXTLENGTH'; WM_PAINT : Result:='WM_PAINT'; WM_CLOSE : Result:='WM_CLOSE'; WM_QUERYENDSESSION : Result:='WM_QUERYENDSESSION'; WM_QUIT : Result:='WM_QUIT'; WM_QUERYOPEN : Result:='WM_QUERYOPEN'; WM_ERASEBKGND : Result:='WM_ERASEBKGND'; WM_SYSCOLORCHANGE : Result:='WM_SYSCOLORCHANGE'; WM_ENDSESSION : Result:='WM_ENDSESSION'; WM_SYSTEMERROR : Result:='WM_SYSTEMERROR'; WM_SHOWWINDOW : Result:='WM_SHOWWINDOW'; WM_CTLCOLOR : Result:='WM_CTLCOLOR'; WM_WININICHANGE : Result:='WM_WININICHANGE'; //WM_SETTINGCHANGE : Result:='WM_SETTINGCHANGE'; WM_DEVMODECHANGE : Result:='WM_DEVMODECHANGE'; WM_ACTIVATEAPP : Result:='WM_ACTIVATEAPP'; WM_FONTCHANGE : Result:='WM_FONTCHANGE'; WM_TIMECHANGE : Result:='WM_TIMECHANGE'; WM_CANCELMODE : Result:='WM_CANCELMODE'; WM_SETCURSOR : Result:='WM_SETCURSOR'; WM_MOUSEACTIVATE : Result:='WM_MOUSEACTIVATE'; WM_CHILDACTIVATE : Result:='WM_CHILDACTIVATE'; WM_QUEUESYNC : Result:='WM_QUEUESYNC'; WM_GETMINMAXINFO : Result:='WM_GETMINMAXINFO'; WM_PAINTICON : Result:='WM_PAINTICON'; WM_ICONERASEBKGND : Result:='WM_ICONERASEBKGND'; WM_NEXTDLGCTL : Result:='WM_NEXTDLGCTL'; WM_SPOOLERSTATUS : Result:='WM_SPOOLERSTATUS'; WM_DRAWITEM : Result:='WM_DRAWITEM'; WM_MEASUREITEM : Result:='WM_MEASUREITEM'; WM_DELETEITEM : Result:='WM_DELETEITEM'; WM_VKEYTOITEM : Result:='WM_VKEYTOITEM'; WM_CHARTOITEM : Result:='WM_CHARTOITEM'; WM_SETFONT : Result:='WM_SETFONT'; WM_GETFONT : Result:='WM_GETFONT'; WM_SETHOTKEY : Result:='WM_SETHOTKEY'; WM_GETHOTKEY : Result:='WM_GETHOTKEY'; WM_QUERYDRAGICON : Result:='WM_QUERYDRAGICON'; WM_COMPAREITEM : Result:='WM_COMPAREITEM'; WM_GETOBJECT : Result:='WM_GETOBJECT'; WM_COMPACTING : Result:='WM_COMPACTING'; WM_COMMNOTIFY : Result:='WM_COMMNOTIFY'; WM_WINDOWPOSCHANGING : Result:='WM_WINDOWPOSCHANGING'; WM_WINDOWPOSCHANGED : Result:='WM_WINDOWPOSCHANGED'; WM_POWER : Result:='WM_POWER'; WM_COPYDATA : Result:='WM_COPYDATA'; WM_CANCELJOURNAL : Result:='WM_CANCELJOURNAL'; WM_NOTIFY : Result:='WM_NOTIFY'; WM_INPUTLANGCHANGEREQUEST : Result:='WM_INPUTLANGCHANGEREQUEST'; WM_INPUTLANGCHANGE : Result:='WM_INPUTLANGCHANGE'; WM_TCARD : Result:='WM_TCARD'; WM_HELP : Result:='WM_HELP'; WM_USERCHANGED : Result:='WM_USERCHANGED'; WM_NOTIFYFORMAT : Result:='WM_NOTIFYFORMAT'; WM_CONTEXTMENU : Result:='WM_CONTEXTMENU'; WM_STYLECHANGING : Result:='WM_STYLECHANGING'; WM_STYLECHANGED : Result:='WM_STYLECHANGED'; WM_DISPLAYCHANGE : Result:='WM_DISPLAYCHANGE'; WM_GETICON : Result:='WM_GETICON'; WM_SETICON : Result:='WM_SETICON'; WM_NCCREATE : Result:='WM_NCCREATE'; WM_NCDESTROY : Result:='WM_NCDESTROY'; WM_NCCALCSIZE : Result:='WM_NCCALCSIZE'; WM_NCHITTEST : Result:='WM_NCHITTEST'; WM_NCPAINT : Result:='WM_NCPAINT'; WM_NCACTIVATE : Result:='WM_NCACTIVATE'; WM_GETDLGCODE : Result:='WM_GETDLGCODE'; WM_NCMOUSEMOVE : Result:='WM_NCMOUSEMOVE'; WM_NCLBUTTONDOWN : Result:='WM_NCLBUTTONDOWN'; WM_NCLBUTTONUP : Result:='WM_NCLBUTTONUP'; WM_NCLBUTTONDBLCLK : Result:='WM_NCLBUTTONDBLCLK'; WM_NCRBUTTONDOWN : Result:='WM_NCRBUTTONDOWN'; WM_NCRBUTTONUP : Result:='WM_NCRBUTTONUP'; WM_NCRBUTTONDBLCLK : Result:='WM_NCRBUTTONDBLCLK'; WM_NCMBUTTONDOWN : Result:='WM_NCMBUTTONDOWN'; WM_NCMBUTTONUP : Result:='WM_NCMBUTTONUP'; WM_NCMBUTTONDBLCLK : Result:='WM_NCMBUTTONDBLCLK'; WM_NCXBUTTONDOWN : Result:='WM_NCXBUTTONDOWN'; WM_NCXBUTTONUP : Result:='WM_NCXBUTTONUP'; WM_NCXBUTTONDBLCLK : Result:='WM_NCXBUTTONDBLCLK'; WM_INPUT : Result:='WM_INPUT'; WM_KEYFIRST : Result:='WM_KEYFIRST'; //WM_KEYDOWN : Result:='WM_KEYDOWN'; WM_KEYUP : Result:='WM_KEYUP'; WM_CHAR : Result:='WM_CHAR'; WM_DEADCHAR : Result:='WM_DEADCHAR'; WM_SYSKEYDOWN : Result:='WM_SYSKEYDOWN'; WM_SYSKEYUP : Result:='WM_SYSKEYUP'; WM_SYSCHAR : Result:='WM_SYSCHAR'; WM_SYSDEADCHAR : Result:='WM_SYSDEADCHAR'; WM_UNICHAR : Result:='WM_UNICHAR'; //WM_KEYLAST : Result:='WM_KEYLAST'; WM_INITDIALOG : Result:='WM_INITDIALOG'; WM_COMMAND : Result:='WM_COMMAND'; WM_SYSCOMMAND : Result:='WM_SYSCOMMAND'; WM_TIMER : Result:='WM_TIMER'; WM_HSCROLL : Result:='WM_HSCROLL'; WM_VSCROLL : Result:='WM_VSCROLL'; WM_INITMENU : Result:='WM_INITMENU'; WM_INITMENUPOPUP : Result:='WM_INITMENUPOPUP'; WM_MENUSELECT : Result:='WM_MENUSELECT'; WM_MENUCHAR : Result:='WM_MENUCHAR'; WM_ENTERIDLE : Result:='WM_ENTERIDLE'; WM_MENURBUTTONUP : Result:='WM_MENURBUTTONUP'; WM_MENUDRAG : Result:='WM_MENUDRAG'; WM_MENUGETOBJECT : Result:='WM_MENUGETOBJECT'; WM_UNINITMENUPOPUP : Result:='WM_UNINITMENUPOPUP'; WM_MENUCOMMAND : Result:='WM_MENUCOMMAND'; WM_CHANGEUISTATE : Result:='WM_CHANGEUISTATE'; WM_UPDATEUISTATE : Result:='WM_UPDATEUISTATE'; WM_QUERYUISTATE : Result:='WM_QUERYUISTATE'; WM_CTLCOLORMSGBOX : Result:='WM_CTLCOLORMSGBOX'; WM_CTLCOLOREDIT : Result:='WM_CTLCOLOREDIT'; WM_CTLCOLORLISTBOX : Result:='WM_CTLCOLORLISTBOX'; WM_CTLCOLORBTN : Result:='WM_CTLCOLORBTN'; WM_CTLCOLORDLG : Result:='WM_CTLCOLORDLG'; WM_CTLCOLORSCROLLBAR : Result:='WM_CTLCOLORSCROLLBAR'; WM_CTLCOLORSTATIC : Result:='WM_CTLCOLORSTATIC'; WM_MOUSEFIRST : Result:='WM_MOUSEFIRST'; //WM_MOUSEMOVE : Result:='WM_MOUSEMOVE'; WM_LBUTTONDOWN : Result:='WM_LBUTTONDOWN'; WM_LBUTTONUP : Result:='WM_LBUTTONUP'; WM_LBUTTONDBLCLK : Result:='WM_LBUTTONDBLCLK'; WM_RBUTTONDOWN : Result:='WM_RBUTTONDOWN'; WM_RBUTTONUP : Result:='WM_RBUTTONUP'; WM_RBUTTONDBLCLK : Result:='WM_RBUTTONDBLCLK'; WM_MBUTTONDOWN : Result:='WM_MBUTTONDOWN'; WM_MBUTTONUP : Result:='WM_MBUTTONUP'; WM_MBUTTONDBLCLK : Result:='WM_MBUTTONDBLCLK'; WM_MOUSEWHEEL : Result:='WM_MOUSEWHEEL'; //WM_MOUSELAST : Result:='WM_MOUSELAST'; WM_PARENTNOTIFY : Result:='WM_PARENTNOTIFY'; WM_ENTERMENULOOP : Result:='WM_ENTERMENULOOP'; WM_EXITMENULOOP : Result:='WM_EXITMENULOOP'; WM_NEXTMENU : Result:='WM_NEXTMENU'; WM_SIZING : Result:='WM_SIZING'; WM_CAPTURECHANGED : Result:='WM_CAPTURECHANGED'; WM_MOVING : Result:='WM_MOVING'; WM_POWERBROADCAST : Result:='WM_POWERBROADCAST'; WM_DEVICECHANGE : Result:='WM_DEVICECHANGE'; WM_IME_STARTCOMPOSITION : Result:='WM_IME_STARTCOMPOSITION'; WM_IME_ENDCOMPOSITION : Result:='WM_IME_ENDCOMPOSITION'; WM_IME_COMPOSITION : Result:='WM_IME_COMPOSITION'; //WM_IME_KEYLAST : Result:='WM_IME_KEYLAST'; WM_IME_SETCONTEXT : Result:='WM_IME_SETCONTEXT'; WM_IME_NOTIFY : Result:='WM_IME_NOTIFY'; WM_IME_CONTROL : Result:='WM_IME_CONTROL'; WM_IME_COMPOSITIONFULL : Result:='WM_IME_COMPOSITIONFULL'; WM_IME_SELECT : Result:='WM_IME_SELECT'; WM_IME_CHAR : Result:='WM_IME_CHAR'; WM_IME_REQUEST : Result:='WM_IME_REQUEST'; WM_IME_KEYDOWN : Result:='WM_IME_KEYDOWN'; WM_IME_KEYUP : Result:='WM_IME_KEYUP'; WM_MDICREATE : Result:='WM_MDICREATE'; WM_MDIDESTROY : Result:='WM_MDIDESTROY'; WM_MDIACTIVATE : Result:='WM_MDIACTIVATE'; WM_MDIRESTORE : Result:='WM_MDIRESTORE'; WM_MDINEXT : Result:='WM_MDINEXT'; WM_MDIMAXIMIZE : Result:='WM_MDIMAXIMIZE'; WM_MDITILE : Result:='WM_MDITILE'; WM_MDICASCADE : Result:='WM_MDICASCADE'; WM_MDIICONARRANGE : Result:='WM_MDIICONARRANGE'; WM_MDIGETACTIVE : Result:='WM_MDIGETACTIVE'; WM_MDISETMENU : Result:='WM_MDISETMENU'; WM_ENTERSIZEMOVE : Result:='WM_ENTERSIZEMOVE'; WM_EXITSIZEMOVE : Result:='WM_EXITSIZEMOVE'; WM_DROPFILES : Result:='WM_DROPFILES'; WM_MDIREFRESHMENU : Result:='WM_MDIREFRESHMENU'; WM_MOUSEHOVER : Result:='WM_MOUSEHOVER'; WM_MOUSELEAVE : Result:='WM_MOUSELEAVE'; WM_NCMOUSEHOVER : Result:='WM_NCMOUSEHOVER'; WM_NCMOUSELEAVE : Result:='WM_NCMOUSELEAVE'; WM_WTSSESSION_CHANGE : Result:='WM_WTSSESSION_CHANGE'; WM_TABLET_FIRST : Result:='WM_TABLET_FIRST'; WM_TABLET_LAST : Result:='WM_TABLET_LAST'; WM_CUT : Result:='WM_CUT'; WM_COPY : Result:='WM_COPY'; WM_PASTE : Result:='WM_PASTE'; WM_CLEAR : Result:='WM_CLEAR'; WM_UNDO : Result:='WM_UNDO'; WM_RENDERFORMAT : Result:='WM_RENDERFORMAT'; WM_RENDERALLFORMATS : Result:='WM_RENDERALLFORMATS'; WM_DESTROYCLIPBOARD : Result:='WM_DESTROYCLIPBOARD'; WM_DRAWCLIPBOARD : Result:='WM_DRAWCLIPBOARD'; WM_PAINTCLIPBOARD : Result:='WM_PAINTCLIPBOARD'; WM_VSCROLLCLIPBOARD : Result:='WM_VSCROLLCLIPBOARD'; WM_SIZECLIPBOARD : Result:='WM_SIZECLIPBOARD'; WM_ASKCBFORMATNAME : Result:='WM_ASKCBFORMATNAME'; WM_CHANGECBCHAIN : Result:='WM_CHANGECBCHAIN'; WM_HSCROLLCLIPBOARD : Result:='WM_HSCROLLCLIPBOARD'; WM_QUERYNEWPALETTE : Result:='WM_QUERYNEWPALETTE'; WM_PALETTEISCHANGING : Result:='WM_PALETTEISCHANGING'; WM_PALETTECHANGED : Result:='WM_PALETTECHANGED'; WM_HOTKEY : Result:='WM_HOTKEY'; WM_PRINT : Result:='WM_PRINT'; WM_PRINTCLIENT : Result:='WM_PRINTCLIENT'; WM_APPCOMMAND : Result:='WM_APPCOMMAND'; WM_THEMECHANGED : Result:='WM_THEMECHANGED'; WM_HANDHELDFIRST : Result:='WM_HANDHELDFIRST'; WM_HANDHELDLAST : Result:='WM_HANDHELDLAST'; WM_PENWINFIRST : Result:='WM_PENWINFIRST'; WM_PENWINLAST : Result:='WM_PENWINLAST'; WM_COALESCE_FIRST : Result:='WM_COALESCE_FIRST'; WM_COALESCE_LAST : Result:='WM_COALESCE_LAST'; WM_DDE_FIRST : Result:='WM_DDE_FIRST'; //WM_DDE_INITIATE : Result:='WM_DDE_INITIATE'; WM_DDE_TERMINATE : Result:='WM_DDE_TERMINATE'; WM_DDE_ADVISE : Result:='WM_DDE_ADVISE'; WM_DDE_UNADVISE : Result:='WM_DDE_UNADVISE'; WM_DDE_ACK : Result:='WM_DDE_ACK'; WM_DDE_DATA : Result:='WM_DDE_DATA'; WM_DDE_REQUEST : Result:='WM_DDE_REQUEST'; WM_DDE_POKE : Result:='WM_DDE_POKE'; WM_DDE_EXECUTE : Result:='WM_DDE_EXECUTE'; //WM_DDE_LAST : Result:='WM_DDE_LAST'; WM_APP : Result:='WM_APP'; { NOTE: All Message Numbers below 0x0400 are RESERVED } { Private Window Messages Start Here } WM_USER : Result:='WM_USER'; { Button Notification Codes } //BN_CLICKED : Result:='BN_CLICKED'; //BN_PAINT : Result:='BN_PAINT'; //BN_HILITE : Result:='BN_HILITE'; //BN_UNHILITE : Result:='BN_UNHILITE'; BN_DISABLE : Result:='BN_DISABLE'; //BN_DOUBLECLICKED : Result:='BN_DOUBLECLICKED'; //BN_PUSHED : Result:='BN_PUSHED'; //BN_UNPUSHED : Result:='BN_UNPUSHED'; //BN_DBLCLK : Result:='BN_DBLCLK'; //BN_SETFOCUS : Result:='BN_SETFOCUS'; //BN_KILLFOCUS : Result:='BN_KILLFOCUS'; { Button Control Messages } BM_GETCHECK : Result:='BM_GETCHECK'; BM_SETCHECK : Result:='BM_SETCHECK'; BM_GETSTATE : Result:='BM_GETSTATE'; BM_SETSTATE : Result:='BM_SETSTATE'; BM_SETSTYLE : Result:='BM_SETSTYLE'; BM_CLICK : Result:='BM_CLICK'; BM_GETIMAGE : Result:='BM_GETIMAGE'; BM_SETIMAGE : Result:='BM_SETIMAGE'; { Listbox Notification Codes } LBN_ERRSPACE : Result:='LBN_ERRSPACE'; //LBN_SELCHANGE : Result:='LBN_SELCHANGE'; //LBN_DBLCLK : Result:='LBN_DBLCLK'; //LBN_SELCANCEL : Result:='LBN_SELCANCEL'; //LBN_SETFOCUS : Result:='LBN_SETFOCUS'; //LBN_KILLFOCUS : Result:='LBN_KILLFOCUS'; { Listbox messages } LB_ADDSTRING : Result:='LB_ADDSTRING'; LB_INSERTSTRING : Result:='LB_INSERTSTRING'; LB_DELETESTRING : Result:='LB_DELETESTRING'; LB_SELITEMRANGEEX : Result:='LB_SELITEMRANGEEX'; LB_RESETCONTENT : Result:='LB_RESETCONTENT'; LB_SETSEL : Result:='LB_SETSEL'; LB_SETCURSEL : Result:='LB_SETCURSEL'; LB_GETSEL : Result:='LB_GETSEL'; LB_GETCURSEL : Result:='LB_GETCURSEL'; LB_GETTEXT : Result:='LB_GETTEXT'; LB_GETTEXTLEN : Result:='LB_GETTEXTLEN'; LB_GETCOUNT : Result:='LB_GETCOUNT'; LB_SELECTSTRING : Result:='LB_SELECTSTRING'; LB_DIR : Result:='LB_DIR'; LB_GETTOPINDEX : Result:='LB_GETTOPINDEX'; LB_FINDSTRING : Result:='LB_FINDSTRING'; LB_GETSELCOUNT : Result:='LB_GETSELCOUNT'; LB_GETSELITEMS : Result:='LB_GETSELITEMS'; LB_SETTABSTOPS : Result:='LB_SETTABSTOPS'; LB_GETHORIZONTALEXTENT : Result:='LB_GETHORIZONTALEXTENT'; LB_SETHORIZONTALEXTENT : Result:='LB_SETHORIZONTALEXTENT'; LB_SETCOLUMNWIDTH : Result:='LB_SETCOLUMNWIDTH'; LB_ADDFILE : Result:='LB_ADDFILE'; LB_SETTOPINDEX : Result:='LB_SETTOPINDEX'; LB_GETITEMRECT : Result:='LB_GETITEMRECT'; LB_GETITEMDATA : Result:='LB_GETITEMDATA'; LB_SETITEMDATA : Result:='LB_SETITEMDATA'; LB_SELITEMRANGE : Result:='LB_SELITEMRANGE'; LB_SETANCHORINDEX : Result:='LB_SETANCHORINDEX'; LB_GETANCHORINDEX : Result:='LB_GETANCHORINDEX'; LB_SETCARETINDEX : Result:='LB_SETCARETINDEX'; LB_GETCARETINDEX : Result:='LB_GETCARETINDEX'; LB_SETITEMHEIGHT : Result:='LB_SETITEMHEIGHT'; LB_GETITEMHEIGHT : Result:='LB_GETITEMHEIGHT'; LB_FINDSTRINGEXACT : Result:='LB_FINDSTRINGEXACT'; LB_SETLOCALE : Result:='LB_SETLOCALE'; LB_GETLOCALE : Result:='LB_GETLOCALE'; LB_SETCOUNT : Result:='LB_SETCOUNT'; LB_INITSTORAGE : Result:='LB_INITSTORAGE'; LB_ITEMFROMPOINT : Result:='LB_ITEMFROMPOINT'; LB_MSGMAX : Result:='LB_MSGMAX'; { Combo Box Notification Codes } CBN_ERRSPACE : Result:='CBN_ERRSPACE'; //CBN_SELCHANGE : Result:='CBN_SELCHANGE'; //CBN_DBLCLK : Result:='CBN_DBLCLK'; //CBN_SETFOCUS : Result:='CBN_SETFOCUS'; //CBN_KILLFOCUS : Result:='CBN_KILLFOCUS'; //CBN_EDITCHANGE : Result:='CBN_EDITCHANGE'; //CBN_EDITUPDATE : Result:='CBN_EDITUPDATE'; //CBN_DROPDOWN : Result:='CBN_DROPDOWN'; //CBN_CLOSEUP : Result:='CBN_CLOSEUP'; CBN_SELENDOK : Result:='CBN_SELENDOK'; //CBN_SELENDCANCEL : Result:='CBN_SELENDCANCEL'; { Combo Box messages } CB_GETEDITSEL : Result:='CB_GETEDITSEL'; CB_LIMITTEXT : Result:='CB_LIMITTEXT'; CB_SETEDITSEL : Result:='CB_SETEDITSEL'; CB_ADDSTRING : Result:='CB_ADDSTRING'; CB_DELETESTRING : Result:='CB_DELETESTRING'; CB_DIR : Result:='CB_DIR'; CB_GETCOUNT : Result:='CB_GETCOUNT'; CB_GETCURSEL : Result:='CB_GETCURSEL'; CB_GETLBTEXT : Result:='CB_GETLBTEXT'; CB_GETLBTEXTLEN : Result:='CB_GETLBTEXTLEN'; CB_INSERTSTRING : Result:='CB_INSERTSTRING'; CB_RESETCONTENT : Result:='CB_RESETCONTENT'; CB_FINDSTRING : Result:='CB_FINDSTRING'; CB_SELECTSTRING : Result:='CB_SELECTSTRING'; CB_SETCURSEL : Result:='CB_SETCURSEL'; CB_SHOWDROPDOWN : Result:='CB_SHOWDROPDOWN'; CB_GETITEMDATA : Result:='CB_GETITEMDATA'; CB_SETITEMDATA : Result:='CB_SETITEMDATA'; CB_GETDROPPEDCONTROLRECT : Result:='CB_GETDROPPEDCONTROLRECT'; CB_SETITEMHEIGHT : Result:='CB_SETITEMHEIGHT'; CB_GETITEMHEIGHT : Result:='CB_GETITEMHEIGHT'; CB_SETEXTENDEDUI : Result:='CB_SETEXTENDEDUI'; CB_GETEXTENDEDUI : Result:='CB_GETEXTENDEDUI'; CB_GETDROPPEDSTATE : Result:='CB_GETDROPPEDSTATE'; CB_FINDSTRINGEXACT : Result:='CB_FINDSTRINGEXACT'; CB_SETLOCALE : Result:='CB_SETLOCALE'; CB_GETLOCALE : Result:='CB_GETLOCALE'; CB_GETTOPINDEX : Result:='CB_GETTOPINDEX'; CB_SETTOPINDEX : Result:='CB_SETTOPINDEX'; CB_GETHORIZONTALEXTENT : Result:='CB_GETHORIZONTALEXTENT'; CB_SETHORIZONTALEXTENT : Result:='CB_SETHORIZONTALEXTENT'; CB_GETDROPPEDWIDTH : Result:='CB_GETDROPPEDWIDTH'; CB_SETDROPPEDWIDTH : Result:='CB_SETDROPPEDWIDTH'; CB_INITSTORAGE : Result:='CB_INITSTORAGE'; CB_MSGMAX : Result:='CB_MSGMAX'; { Edit Control Notification Codes } //EN_SETFOCUS : Result:='EN_SETFOCUS'; //EN_KILLFOCUS : Result:='EN_KILLFOCUS'; //EN_CHANGE : Result:='EN_CHANGE'; //EN_UPDATE : Result:='EN_UPDATE'; EN_ERRSPACE : Result:='EN_ERRSPACE'; EN_MAXTEXT : Result:='EN_MAXTEXT'; EN_HSCROLL : Result:='EN_HSCROLL'; EN_VSCROLL : Result:='EN_VSCROLL'; { Edit Control Messages } EM_GETSEL : Result:='EM_GETSEL'; EM_SETSEL : Result:='EM_SETSEL'; EM_GETRECT : Result:='EM_GETRECT'; EM_SETRECT : Result:='EM_SETRECT'; EM_SETRECTNP : Result:='EM_SETRECTNP'; EM_SCROLL : Result:='EM_SCROLL'; EM_LINESCROLL : Result:='EM_LINESCROLL'; EM_SCROLLCARET : Result:='EM_SCROLLCARET'; EM_GETMODIFY : Result:='EM_GETMODIFY'; EM_SETMODIFY : Result:='EM_SETMODIFY'; EM_GETLINECOUNT : Result:='EM_GETLINECOUNT'; EM_LINEINDEX : Result:='EM_LINEINDEX'; EM_SETHANDLE : Result:='EM_SETHANDLE'; EM_GETHANDLE : Result:='EM_GETHANDLE'; EM_GETTHUMB : Result:='EM_GETTHUMB'; EM_LINELENGTH : Result:='EM_LINELENGTH'; EM_REPLACESEL : Result:='EM_REPLACESEL'; EM_GETLINE : Result:='EM_GETLINE'; EM_LIMITTEXT : Result:='EM_LIMITTEXT'; EM_CANUNDO : Result:='EM_CANUNDO'; EM_UNDO : Result:='EM_UNDO'; EM_FMTLINES : Result:='EM_FMTLINES'; EM_LINEFROMCHAR : Result:='EM_LINEFROMCHAR'; EM_SETTABSTOPS : Result:='EM_SETTABSTOPS'; EM_SETPASSWORDCHAR : Result:='EM_SETPASSWORDCHAR'; EM_EMPTYUNDOBUFFER : Result:='EM_EMPTYUNDOBUFFER'; EM_GETFIRSTVISIBLELINE : Result:='EM_GETFIRSTVISIBLELINE'; EM_SETREADONLY : Result:='EM_SETREADONLY'; EM_SETWORDBREAKPROC : Result:='EM_SETWORDBREAKPROC'; EM_GETWORDBREAKPROC : Result:='EM_GETWORDBREAKPROC'; EM_GETPASSWORDCHAR : Result:='EM_GETPASSWORDCHAR'; EM_SETMARGINS : Result:='EM_SETMARGINS'; EM_GETMARGINS : Result:='EM_GETMARGINS'; //EM_SETLIMITTEXT : Result:='EM_SETLIMITTEXT'; EM_GETLIMITTEXT : Result:='EM_GETLIMITTEXT'; EM_POSFROMCHAR : Result:='EM_POSFROMCHAR'; EM_CHARFROMPOS : Result:='EM_CHARFROMPOS'; EM_SETIMESTATUS : Result:='EM_SETIMESTATUS'; EM_GETIMESTATUS : Result:='EM_GETIMESTATUS'; { Scroll bar messages } SBM_SETPOS : Result:='SBM_SETPOS'; SBM_GETPOS : Result:='SBM_GETPOS'; SBM_SETRANGE : Result:='SBM_SETRANGE'; SBM_SETRANGEREDRAW : Result:='SBM_SETRANGEREDRAW'; SBM_GETRANGE : Result:='SBM_GETRANGE'; SBM_ENABLE_ARROWS : Result:='SBM_ENABLE_ARROWS'; SBM_SETSCROLLINFO : Result:='SBM_SETSCROLLINFO'; SBM_GETSCROLLINFO : Result:='SBM_GETSCROLLINFO'; { Dialog messages } //DM_GETDEFID : Result:='DM_GETDEFID'; DM_SETDEFID : Result:='DM_SETDEFID'; DM_REPOSITION : Result:='DM_REPOSITION'; PSM_PAGEINFO : Result:='PSM_PAGEINFO'; PSM_SHEETINFO : Result:='PSM_SHEETINFO'; else result:=IntToHex(ms,8); end; end; end. Aí como se pode usar: Eu fiz uma lista no form que vai rolando a medida que são exibidas as mensagens, assim -> Primeiro você declara uma StringList global na unit do form, tudo vai ser na unit do form, claro -> implementation var List : TStringList; Aí no final da unit antes do end. você coloca a inicialização e finalização -> Initialization List:=TStringList.Create; Finalization List.Destroy; end. Aí você declara na interface Public do seu form o procedimento de janela, e a referencia ao original-> Public ParentWProc : TWndMethod; procedure MyWProc(var msg : TMessage); A implementação dela deve ser -> procedure TForm1.MyWProc(var msg : TMessage); var i : cardinal; begin ParentWProc(msg); List.Add(MesToStr(msg.msg)+' W = '+IntToHex(msg.wParam,8)+' L = '+IntToHex(msg.lParam,8)+' R = '+IntToHex(msg.Result,8)); if (List.Count > 49) then List.Delete(0); i:=0; while (i <= List.Count-1) do Begin Canvas.TextOut(4,abs(Canvas.Font.Height)*i,List[i]+' '); inc(i); end; end; E no OnCreate do form deve-se salvar o WndProc do Form -> ParentWProc:=WindowProc; WindowProc:=MyWProc; E no OnClose coloque -> WindowProc:=ParentWProc; Acho que é só isso. Isso deve fazer todas as mensagens que o Form recebe serem listadas numa lista rolante desenhada no Canvas do Form. Espero que seja útil. Abraço.
  3. Opa, O erro Undeclared Identifier está ocorrendo porque você não declarou Graphics na cláusula Uses. Coloque Uses Graphics; E verá que esse erro não mais ocorrerá.
  4. Existe uma coisinha chamada Type Cast onde você lê ou escreve em uma variável com o tipo que você quiser. Isso se dá colocando o tipo seguido da variável entre parentesis. então pra transformar ponteiro em integer é assim-> Integer(Ponteiro). E de Integer pra ponteiro é -> Pointer(inteiro). Então no seu caso ficaria-> var inteiro : Integer; pt : PNetResourceA; NetRes : TNetResourceA; begin inteiro:=Integer(@NetRes); // já salvou o ponterio no integer pt:=Pointer(inteiro); // jogou o endereço pro ponteiro mesmo. end; Nesse caso tanto faz inteiro:=Integer(@NetRes); como Pointer(inteiro):=@NetRes; Beleza?
  5. Mas ainda continua errado porque se for 2 ele vai dizer que não é primo então-> if (((n mod 2) = 0) and (n <> 2)) then begin result:=false; exit; end; A propósito, conseguí resolver aquele erro do CaptionButton. Acho que agora sai.
  6. se for número par ele vai dizer que é primo, tem que colocar antes -> if ((n mod 2) = 0) then begin result:=false; exit; end; Certo?
  7. você reparou que essa função está errada, não é? rsrsrsrsrsrs.
  8. Opa Acho que tem como. Use a função ClipCursor do Windows passando como parametro um ponteiro para um TRect da área do seu panel-> ClipCursor(@Rect); Para voltar ao normal chame a mesma função com parametro nil -> ClipCursor(nil); Abraço.
  9. Desculpe me intrometer mas se quiser que o texto faça parte do registro e não só o ponteiro você tem que usar string com tamanho fixo tipo-> Rec = record st : string[16]; i : integer; end; Nesse caso a string ocupará 17 bytes porque o elemento [0] vai ser o byte que indica o tamanho da string. Ou -> Rec = record st : array[1..16] of char; i : integer; end; Nesse caso você vai poder fazer atribuições tipo rec.st:='abcdefghijklmnop'; e tem que ser string do mesmo tamanho porque senão da erro. Nesse caso a string ocupará somente 16 bytes. e se você quiser passar string de qualquer tamanho acho que é assim -> var st : string; begin st:='sarkfujhsdlkj sdkjfhasdl akjlsdfh sfadk '; MyStream.WriteBuffer(pointer(st)^, length(st)+1); . . .nesse caso o ultimo byte é o null terminator.
  10. faça o seguinte -> function primo(n : int64) : boolean; var r : Extended; test, i : int64; begin //calcule a raiz quadrada do número -> r:=n; r:=sqrt(r)+1; test:=trunc(r); i:=3; while (i <= test) do begin if ((n mod i) = 0) then begin result:=false; exit; end; inc(i,2); end; result:=true; end; Acho que é isto. Dessa forma evita-se que seja tirada a raiz a cada loop while e fazendo cair a performance do algorítmo.
  11. Usando o tipo Int 64 você verifica números até 9.223.372.036.854.775.807(se você for verificar um número desses eu nem sei quanto tempo pode demorar. Alguns séculos?). Entretanto é possível escrever algorítmos para trabalhar com qualquer número, é só você verificar overflow na variável e alocar a variável no tamanho necessário para comportar o número. Calculadoras avançadas usam esse método. Com números reais também é possível, apenas complica um pouco por se tratarem de números decimais com ponto flutuante. Dessa maneira obtem-se números com qualquer precisão. Qual é o outro algorítmo que você utiliza que é mais rápido do que esse? E se você souber um pra calcular o valor de PI também estou interessado. O que eu fiz aqui demorou 1 dia pra calcular 8 casas decimais. Putz. Sei que devem existir algorítmos mais rápidos porque já se calcularam algumas centenas de milhares de dígitos se não me engano.
  12. Opa O tipo para tamanho de arquivos é o Int64. As funções são GetFileSize que recebe o handle do arquivo e retorna um inteiro de 4 bytes para a parte baixa do tamanho e o 2º é um ponteiro para onde deve ser colocado a parte alta a parte alta. A função GetFileSizeEx recebe um handle e um ponteiro para um int64 onde coloca o tamanho e retorna True ou False indicando sucesso. A função FileSizeByName recebe o nome do arquivo e retorna o int64 com o tamanho. E se nada disso funcionar use esta -> function GetFileSizeEx(STFile : String) : int64; var hfile : Cardinal; begin hfile:=FileOpen(STFile,fmopenread or fmShareDenyNone); result:=fileseek(hFile,Int64(0),2); FileClose(hFile); end;
  13. É isso mesmo, toda aplicação é suposta a mandar uma mensagem para todas as janelas quendo fizer uma mudança de hora SendMessage(HWND_TOPMOST,WM_TIMECHANGE,0,0);. Se não mandar eu não sei se o sistema operacional manda. Faz um teste, faça uma aplicação que faz a mudança sem mandar a mensagem e outro que tenha esse procedimento para receber a mensagem e veja se é enviada.
  14. $ sozinho não existe, tem que vir um número hexa depois. Então -> const nullTerminator: Byte = $0; ou 0. $0 = 0 não acha? Está certo. Mas melhor seria -> const nop = byte($90);
  15. Uma aplicação que se preze deveria mandar a menssagem WM_TIMECHANGE toda vez que mudar a hora do sistema, para que as outras aplicações possam tomar as devidas providencias.
  16. Opa, 0x = $ 0xE4 = $E4 (char)0xFE = -2 (unsigned char)0xFE = 254 { char c; c = 254; caption = IntToStr(c); //será mostrado -2 } Abração.
  17. não tem que configurar nada no componente. O componente deve ter uma propriedade bitmap. então-> bm:=tbitmap.create; bm.height:=icon.height; bm.width:=icon.width; bm.canvas.brush.color:=0; bm.canvas.fillrect(bounds(0,0,bm.width,bm.height)); bm.canvas.Draw(0,0,icon); SeuBotao.Bitmap:=bm; bm.free;//só se o botão usar assign para atribuir o bitmap.
  18. É só converter o ícone pra bmp -> bm.height:=icon.height; bm.width:=icon.width; bm.canvas.brush.color:=0; bm.canvas.fillrect(bounds(0,0,bm.width,bm.height)); bm.canvas.Draw(0,0,icon); Acho que é isso.
  19. Nesse post falava-se da propriedade AlphaBlend do Form, e não da função AlphaBlend da GDI. Tá bom, lá tem um link para uma página da microsoft onde se menciona essa função, mas aí já é querer demais. Era só falar "Thales, dê uma olhada na função AlphaBlend". E o pior é que para conseguir o efeito que eu queria eu tive que usar form branco. Eu queria que ficasse igual papel celofane, e para isso é preciso subtrair do pixel de destino o inverso do pixel da fonte. Se existisse isso na GDI(não sei se existe) ficaria perfeito. Fazendo um AND lógico o efeito é o mesmo desde que o form seja branco, se for cinza alguns bits do destino estarão desligados o que fará com que os mesmo bits da fonte também fiquem, e isso resulta em perda de tonalidade, ou seja, um grupo de cores com mesma matiz mas com tonalidades próximas mas não iguais se tornam a mesma cor.
  20. Portanto continua a sugestão: Seria legal se os posts editados fossem marcados como não lidos. Abraço.
  21. Yes :lol: . O primeiro passo já foi. Conseguí identificar o thema do botão e desenha-lo. Agora só falta colocar os eventos NC. Yes :lol: .
  22. Tenho uma sugestão pra você: Leia o livro "Delphi a bíblia" todo e depois venha discutir.
  23. p*********, c**********, só agora que eu fui descobrir que tem a função AlphaBlend da gdi do windows que faz isso, f************, c************, p************** será que ninguém sabia disso não, p*********************.
  24. Desculpe, me expressei mal. eu perguntei se ele retorna do procedimento assim que ocorre uma exceção fora do try, ou seja, quando você força a exceção. Entendeu agora? quer dizer que ele não vai rodar algum método do tipo GetConnected e não vai dar erro de UNAVAILABLE DATABASE? Tem certeza? Pena que o rapaz não se interessou mais. ps. Eu esperaria umas 200 vezes, quem sabe o banco não teve tempo ainda.
  25. Bom, no caso da primeira exceção ele retorna do procedimento não é isso? Porque no caso eu pensei em colocar um exit depois da primeira exceção já que não há nada a fazer depois, mas acho que não deve ser necessário, né? Outra dúvida, quando ele for ler a propriedade connected no inicio do loop ele já não vai causar uma exceção se o banco não estiver presente?
×
×
  • Criar Novo...