Sunteți pe pagina 1din 63
Fungées para o Delphi APOSTILA DICAS DE PROGRAMAGAO DELPHI Professor Edgar Caldeira da Cruz Araras/SP 2013 Pagina 1 Fungées para o Delphi SUMARIO Acessando arquivos Paradox em rede Confirmar o diretério. Hint com quebra de linha Testa se existe disco no drive “A” Verifica se o Form ja est ativo Pegando o nome do usuario ¢ o name da empresa no Windows Como criar uma tela de abertura (Splash Screen) Como validar a entrada de uma caixa de texto. Atecla “ENTER” para funcionar como "TAB" Capturar tela Subtrairladicionar N meses a uma data Data por extenso Habilitar e desabiliar a senha do protetor de tela Sobrescrevendo um evento Como evitar a mensagem de erro Key Violation Como evitar a mensagem de erro Key Violation Executar um PACK em tabelas Paradox Verificar se o registro esta travado Cursor customizado Criando atalhos Emular o pressionamento de uma tecla Fechar um aplicativo a pattir do Delphi Configurar o Delphi para acessar tabelas do Access Apagar um subdiretério, Testar a impressora Validar datas. Procurar arquivos Abrir arquivos com aplicativo associado Fazer um TEdit aceitar apenas nimeros Alterar 0 papel de parede do Windows Extrair o nlimeto de cores do modo de video corrente Habilitar e desabiltar barra de tarefas, Habiltar e desabiltar ctrl+alt+del Alterar a data e a hora do sistema Enxtrair o tamanho de um arquivo Enxtrair o icone de um executavel Verificando a meméria Numero de série do hd Mapear uma pasta na rede Pagar nome do usuario na rede saber o estado das teclas Num lack, Caps lock e Scroll lock Testando drives Executando programas externos Reproduzindo sons wav, sem o componente mediaplayer. Manipular arquivos INI Exponenciacao Aguardar um determinado n® de segundos Tecla ENTER funcionar como TAB Utilizar ponto para separar decimais Criando um Splash Screen (abertura). Como limpar todos os edits de um form Pagina 2 Fungées para o Delphi Formatar numeros com zeros a esquarda Obrigar a digitagao de caracteres maiisculos num campo memo Imprimindo um campo memo via Canvas Procura e substituigéo de string num campo memo Pegando a linha e coluna atuais de um memo. Trocando a cor de uma célula num DBGrid Trocando a cor da fonte num DBGrid Gerenciando mais de uma linha selecionada num DBGrid (Muttiselect) Commit (Delphi 3) Commit (Delphi 2) Extrair o nlimero do registro atual em tabelas Paradox ou Dbase Alterando Idapi32.Cfg Via Programa Criando tabelas Data por extenso no Quickreport Filtrando registros com 0 Quickreport (Delphi 2) Extraindo o ano, més ou dia de uma data via SQL. Cria um clone Monocromético de um outro Bitmap Gerar Planilha no Excel DBGrid, Ocultando Colunas Dinamicamente com Popup, Transformar de minutos para horas, Campo auto incremento no Oracle e no Interbase Como desativar a protecdo de tela Gira o texto Hint Redondo Informar a velocidade do Processador Instalar quickreport no delphi 7 Mostra e esconde icones da area de trabalho Alterando o papel de parede Salvar a tela em BMP Usando 0 Word dentro do Delphi Funedo para validar 0 PIS Calcular a idade usando o MaskEdit Como definir seu préprio hotkey (Tecla Quente) Como interceptar as teclas de fungdes no programa DbGrid zebrado Retorna o espaco livre em disco Para que 0 seu Form nao seja redimensionado Como mover um componente em Run-time Como verificar se a tecla TAB foi pressionada Executar um AVI no Form Colocar zeros a esquerda de um valor digitado no componente Edit Cancelar o pressionamento de uma tecla Utilizar 0 MessageBox com parmetros Retorna a cor de um determinado componente no formato string Verifica se existe o diretério Bloquear a tecla Ctrl+Del do DBGrid Para criar uma janela no retangular Fecha todos os arquivos. Hint com quebra de linhas, Imprimindo sem passar pelo gerenciador de impressao Fechar um aplicativo Delphi a partir de outro aplicativo Delphi. Mostrar o HINT num Panel Retomnar o nome do usuario que esta editando o registro Retomnar o nome do usuario que esta com a tabela Exclusiva 6 26 26 27 21 27 28 28 29 29 29 30 30 31 31 32 32 33 34 35 35 36 37 37 40 4 Al Al a 4B 8 44 45 46 46 a1 47 48 50 50 St St St St 2 2 2 2 2 3 3 3 54 34 Pagina 3 Fungées para o Delphi Configuragao do BDE para ambiente de rede Como criar um Form de Apresentacdo (Splash Form) como o do WORD Verifica se o Form, ja esta ativo, Delphit , Delphi2 e Delphi3 Converter a primeira letra de um Texto em maiiscula Verifica se 0 Form, ja esta ativo Mostrar as fontes TrueT ype instaladas no Windows ShowMessage com quebra de linhas. Veja abaixo como retotnar informagdes do ambiente DOS, Como colocar um componente ComboBox em um componente StringGrid Como retornar A coluna ativa do DBGrid Como mover o conteudo da calculadora do Windows para um Edit 54 56 56 56 31 ‘7 58 58 59 60 61 Pagina 4 Fungées para o Delphi Acessando arquivos Paradox em rede Arquivos Paradox podem ser compartilhados em rede. Para que isto ocorra devemos: 1. Adicionar 0 DATABASE ENGINE CONFIGURATION (BDE CONFIG) 2. Selecionar a pagina DRIVERS 3. Selecionar o driver PARADOX e alterar o parémetro NET DIR para o local onde sero gravados os arquivos de controle para campartilhamenta. Por exemplo "G:’\MEUAPLIC’, onde G : correspande ao drive de rede e MEUAPLIC, o diretério aonde esta 0 aplicativa (executavel) Depois selecionar a pagina SYSTEM Alterar 0 parametro LOCAL SHARE para TRUE. Apés isto 0 BDE controlara o compartilhamento de arquivas PARADOX em rede os Confirmar o diretério procedure TFormt Button Click(Sender. TObject); begin if DirectoryExists(Edit! Text) then Label! Caption := Editt Text +' exists’ else Label! Caption := Edit Text + ' does not exist’, end; Hint com quebra de linha Para incluir mais de uma linha no Hint vocé deve utilizar 0 evento OnMouseMove de cada componente. Veja abaixo como ficara 0 codigo em um Edit por exemplo procedure TForm! EditiMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Edit hint := 'Primeira Linha'+#13+'Segunda Linha'+#13+ Terceira Linha'+#13+'Quarta Linha’ end; Obs. No esquecer de mudar para TRUE 0 evento ShowHint. Testa se existe disco no drive “A” function TForm1.TemDiscoNoDrive(const drive : char): boolean; var DriveNumero : byte; EMode : word; begin result := false; DriveNumero := ord(Drive); if DriveNumero >= ord('a’) then Pagina 5 Fungées para o Delphi dec(DriveNumero $20); EMode := SetErrorMode(SEM_FAILCRITICALERRORS) try if DiskSize(DriveNumera-$40) <> -1 then Result -= true else messagebeep(0) finally SetErrorMode(EMode); end end; procedure TForm! Button| Click(Sender. TObject); begin if TemDiscoNoDrive('a') then ShowM essage('Tem disco no drive A:') else ShowMessage('Naa tem disco no drive A) end, Verifica se o Form ja esta ativo procedure TFormt Button Click(Sender. TObject); var Found : Integer, begin Found :=-1; for i:= 0 to Screen.FormCount - 1 do if Screen Forms[i] is TForm?2 then Found := i if Found >= 0 then Screen.Forms{F ound].Show else begin Form? := TForm2.Create(Self); Form2.Show, end; end. Pegando o nome do usual Uses Registry; Procedure GetUserCompany; var reg: TRegIniFile; begin reg := TReglniFile.create('SOFTWARE\MICROSOF IMS SETUP (ACME)\'); Edit! Text = reg ReadString('USER INFO’ 'DefName',"), Edit2.Text := reg ReadString(’USER INFO’ 'DefCompany’,"); reg free; end. e 0 nome da empresa no Windows Pagina 6 Fungées para o Delphi Como criar uma tela de abertura (Splash Screen) Apés ter criado o formulario principal, crie um Formulario para a Splah Screen que iremos chamar de FormAbertura (dé 0 nome que vocé quiser) Depois de criar os dois forms, clique no menu View, na apedo Project Source Encontranda a linha em que o form de abertura é criado e apague-a Linha que deve ser apagada: begin Application CreateF orm(TF ormabertura, FormAbertura); {Esta linha deve ser apagada} end; Agora insira as linhas abaixa antes da criagdo dos demais form do seu aplicativo begin AberturaF orm:=TF ormAbertura.Create(Application); AberturaF orm show, {Os autros form devem ser criados a partir daqui} FormAbertura Hide; {Esconde o FormAbertura} FormAbertura Free; {Libera Memoria} Application Run: End; Como validar a entrada de uma caixa de texto procedure Edit! KeyPress(Sender: TObject, var Key: Char); begin If not(key in['0'.’9' #8]) then begin beep;{somente delphi 2.0 au 3.0} key:=#0 end. end Atecla “ENTER” para funcionar como “TAB” obs.:(1) a propriedade KEYPREVIEW do form sera igual TRUE, obs..(2) a propriedade DEFAULT dos botées sera igual FALSE, procedure TForm! FarmKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then Begin Key:=#0; if (Sender is TEdit) and (Sender is TComboBox) then TEdit( Sender) Perform(WM_KeyDown,VK_Tab 0) Else Perform(Wm_NextDIgCt,0,0) End; Pagina 7 Fungées para o Delphi Capturar tela procedure TFormt Button Click(Sender. TObject); var BackgroundCanvas : TCanvas, Background : TBitmap; {bitmap holding the background } DC : hDC; begin 1/ get the background bitmap Background:= TBitmap Create; Background Width:= Width; Background Height = Height, DC:= GetDC (0) BackgroundCanvas:= TCanvas.Create; BackgroundCanvas Handle:= DC; / stretch the bitmap to the display size (it could be much smaller (preview) Background.Canvas.CopyRect(Rect (0, 0, Width, Height), BackgroundCanvas, Rect (0, 0, Screen Width, Screen Height)); BackgroundCanvas Free; image 1 Picture.Bitmap:= Background end. Subtrair/adicionar N meses a uma data 1/ Para acrescentar 1 més a data de hoje: Edit! text:= DATETOSTR(INCMONTH (DATE, 1)); // Para subtrair é sé colocar 0 numero de meses negativo Data por extenso Edit! text:= FormatDateTime("Sao Paulo, "dddd’, "d" de "mmmm" de "yyyy' date) Habilitar e desabiliar a senha do protetor de tela Inclua a unit REGISTRY na clausula uses do seu form I Habilita var Registry: TRegistry, begin Registry = TRegistry.Create; Registry RootKey ‘= HKEY_CURRENT_USER; Registry. OpenKey('\Contral PaneliDesktop’, TRUE), Registry Writelnteger('ScreenSaveUsePassword' $0) Registry.CloseKey; Registry Free; end, Pagina 8 Fungées para o Delphi 1 Desabilita procedure TForm! Button2Click(Sender: TObject); var Registry: TRegistry, begin Registry = TRegistry.Create; Registry RootKey ‘= HKEY_CURRENT_USER; Registry. OpenKey('\Contral PaneliDesktop’, TRUE), Registry Writelnteger('ScreenSaveUsePassword' $1) Registry.CloseKey; Registry Free; end, Sobrescrevendo um evento Para executar algo antes do evento Showmodal por exemplo, utilize o seguinte public function showmodal: integer, function TMeuForm.Showmodal : integer, begin {Aqui vai tudo que se precisa fazer antes } result := inherited showmodal, end. Como evitar a mensagem de erro Key Violation No evento OnEnter do TEdit coloque: procedure TForm1 EditiEnter(Sender: TObject) begin Edit! Selstart:= Length(Edit1 text); end. Como evitar a mensagem de erro Key Violation Inclua a unit DBITYPES na clausula uses do seu form. procedure TForm! Table 1PostError(DataSet: TDataSet, E: EDatabaseError, var Action: TDataAction); begin if EDBEngineError(E) Errors[0].ErrorCode = 9729 then ShowMessage('Registro ja existe!’); Action:= daAbort; end, Pagina 9 Fungées para o Delphi Executar um PACK em tabelas Paradox Inclua a unit DBIPROCS na clausula uses do seu form procedure TForm! ParadoxPack(Table : Table). var TBDese : CRTbIDesc; hDb: hDbiDb; TablePath: array[0..dbiMaxPathLen] of char, begin Table Open; FillChar(TBDesc Sizeof(TBDesc) 0); with TBDesc do begin StrPCopy(szTbIName Table. TableName) StrCopy(szTbIType,szParadox); bPack := True; end, hDb == nif Check(DbiGetDirectory(Table DBHandle, True, TablePath)); Table Close; Check(DbiOpenDatabase(nil, ‘STANDARD’, dbiReadWrite, dbiOpenxcl,nil,0, nil, nil, hDb)); Check(DbiSetDirectory(hDb, TablePath)); Check(DBIDoRestructure(hDb, | @TBDesc nil nil,nil False); Table Open; end, Como utilizar: procedure TForm1 Button| Click(Sender. TObject); begin ParadoxPack(table 1); end. Verificar se o registro esta travado Inclua a unit DBITYPES na clausula uses do seu form. function TForm1 sRecordLocked(Table: TTable; ByAnyane: boolean): Boolean; var Locked: BOOL; hCur, DBICur, rsit: DBIResult; begin Table UpdateCursorPos, Ils the record locked by the current session. Check(DbilsRecordLocked(Table Handle, Locked)); Pagina 10 Fungées para o Delphi Result := Locked; IIIf the current session does not have a lack and the ByAnyone varable is, set to check all sessions, continue check if (Result = False) and (ByAnyone = True) then begin 11 Get a new cursor to the same record Check(DbiCloneCursor(Table Handle, False, False, hCur)); try I Try and get the record with a write lock rsit = DbiGetRecord(hCur, dbiWRITELOCK, nil, nil); if rsit <> DBIERR_NONE then begin if an error occured and its a lock error, return true if HiByte(rsit) = ERRCAT_LOCKCONELICT then Result -= True else If some other error happened, throw an exception Check(rsit); end else / Release the lock in this session if the function was successful Check(DbiRelRecordLock(hCur, False); finally I Close the cloned cursor. Check(DbiCloseCursor(hCur)) end end end Como utilizar: procedure TForm! Button' Click(Sender: TObject); begin If IsRecordLocked(Table1,True) then Showmessage(‘Registro Travado!’) end, Pagina 17 Fungées para o Delphi Cursor customizado Criar um arquivo de recurso com 0 cursor (vamos chamé-lo de teste.res) Vamos chamar o recurso de CUR_1 Coloque {$R teste res} na seco implementation procedure InsereCursar(Num : Smallint); begin Screen.Cursors[Num|:= LoadCursor(hinstance, PChar(’CUR_1")); Screen.Cursor ‘= Num, end Criando atalhos Inclua as units ShIObj, ActiveX, ComObj, Registry na clausula uses do seu form. Na sepao type coloque TShortcutPlace = (stDesktop, stStartMenu); E por fim a procedure para realizar o trabalho: procedure TForm! CreateShortcut (FileName, Parameters, InitialDir, ShortcutName, ShortcutF older : String; Place: TShortcutPlace); var MyObject : Unknown; MySLink : IShellLink; MyPFile : |PersistFile; Directory : String; FileName : WideString; MyReg : TReginiFile; begin MyObject := CreateComObject(CLSID_ShellLink); MySLink := MyObject as |ShellLink, MyPFile := MyObject as IPersistFile with MySLink do begin SetArguments(PChar(Parameters)); SetPath(PChar(FileName)); SetWorkingDirectory(PChar(InitialDir)); end, MyReg ‘= TReginiFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer’) if Place = stDesktop then Directory “= MyReg .ReadString (‘Shell Folders’ /Desktop’,"); if Place = stStartMenu then begin Pagina 12 Fungées para o Delphi Directory == MyReg ReadString('Shell Folders’, ‘Start Menu’,") + 'V + ShortcutF older, CreateDir(Directory); end. WFileName := Directory + 'V + ShortcutName + ‘Ink’; MyPFile Save (PWChar (WFileName), False) MyReg Free end. Emular 0 pressionamento de uma tecla keybd_event(85,0,0,0); Sera enviado 0 'A' para o componente que estiver em foco. Fechar um aplicativo a partir do Delphi procedure TFormt Button Click(Sender. TObject); var hHandle : THandle; begin hHandle := FindWindow( nil, 'Formt'); if hHandle <> 0 then SendMessage( hHandle, WM_CLOSE, 0, 0); end. Configurar o Delphi para acessar tabelas do Access + Execute 0 BDE, abra a paleta CONFIGURATION, * Click em Drivers — Native - MsAccess Uma janela de configuracao com varias opgdes sera aberta * Configure a DLL32 para IDDA032.DLL ACESS 95 ou IDDA3532.DLL ACESS 97 + Na opeao SYSTEM DATABASE, aponte para 0 arquivo System.mdw do Acess que geralmente esta no subdiretorio \Msoffice\Access. * Salve a configuracao e apds isto € sé criar seu alias (se ja ouver algum criado delete e configure de novo) * Com essa informagao em mos, faca o programa nao pedir 0 prompt de login (a da senha), colocanda um TDatabase no projeto. + Escolha 0 alias que vocé criau na propriedade AliasName * Altere LoginPrompt para False + Na propriedade DatabaseName, coloque um nome qualquer (serviré como substituto do alias em todas as TTable e TQuery que acessem esse BD) + Altere a propriedade AliasName de todas as TTables e TQueries que acessem essas tabelas para o nome que vocé definiu em DatabaseName no TDatabase. Pagina 13 Fungées para o Delphi Apagar um subdireto: Inclua a unit SHELLAPI na clausula uses do seu form. procedure DeleteDir( Handle : THandle; Const sPath : String ); var OpStruc: TSHFileOpStruct; FromBuffer, ToBuffer: Array[0..128] of Char, begin fillChar( OpStruc, Sizeof(OpStruc), 0 ); FillChar( FromBuffer, Sizeof(FromBuffer), 0 ); FillChar( ToBuffer, Sizeof(ToButfer), 0 ); StrCopy( FromBuffer, sPath); With OpStruc Do Begin Whd:= hHandle; wFunc:=F O_DELETE; pFrom:= @FromButfer; pTo:= @ToBuffer; flags= FOF_NOCONFIRMATION; fAnyOperationsAborted:=False; hNameMappings:=nil MMpszPragressTitle:=nil; End; ShF ileOperation(OpStruc); end, Como utilizar: procedure TForm! Button' Click(Sender: TObject); begin DeleteDir( Self Handle 'C:\TESTE’); end Testar a impressora Function TFormt PrinterOnLine : Boolean. Const PrnStint : Byte = $17; StRq : Byte = $02; PrnNum : Ward Var nResult : byte; Begin Asm mov ah,StRq; mov dx,PmNum; Int $17; ; {0 para LPT1, 1 para LPT2, ete. } Pagina 14 Fungées para o Delphi mov nResult,ah; end: PrinterOnLine := (nResult and $80) = $80; end. Como utilizar: procedure TForm! Button' Click(Sender: TObject); begin If not PrinterOnLine then ShowMessage('Verifique a Impressoral’); end. Validar datas try StrToDate(Edit! Text); except on EConvertError do ShowMessage (‘Data Invalida!’); end. Procurar arquivos procedure TFormt DirList( ASource : string; ADirList : TStringList ); var SearchRec : TSearchRec; Result: integer, begin Result := FindFirst( ASource, faAnyFile, SearchRec ); if Result = 0 then while (Result = 0) do begin if (SearchRec Name+" ')[1] ="' then {Se pegou nome de SubDiretorio } begin Result := FindNext( SearchRec ); Continue end. ADirList Add( SearchRec.Name ); Result := FindNext( SearchRec ); end FindClose( SearchRec ); ADirList Sort, end. Pagina 15 Fungées para o Delphi Como utilizar: procedure TForm1 Buttont Click(Sender: TObject); var contador: Integer, lista: TStringlist; begin lista:= TStringlist.create; DirList('C:\**, lista); end. Abrir arquivos com aplicativo associado Inclua a unit SHELLAPI na clausula uses do seu form. procedure TForm! ExecFile(F: String); var r: String; begin case ShellExecute(Handle, nil, PChar(F), nil, nil, SW_SHOWNORMAL) of ERROR_FILE_NOT_FOUND: r:='The specified file was not found. ERROR_PATH_NOT_FOUND: r:= ‘The specified path was not found.’; ERROR_BAD_FORMAT: r:= The EXE file is invalid (non-Win32 EXE or error in EXE image).', SE_ERR_ACCESSDENIED: r:= ‘Windows 95 only: The operating system denied access to the specified file.’ SE_ERR_ASSOCINCOMPLETE: r:= The filename association is incomplete or invalid. SE_ERR_DDEBUSY: r:= ‘The DDE transaction could not be completed because other DDE transactions were being processed." SE_ERR_DDEFAIL: r= 'The DDE transaction failed.’; SE_ERR_DDETIMEOUT: r= 'The DDE transaction could not be completed because the request timed out.’ SE_ERR_DLLNOTFOUND: r= 'Windaws 95 only: The specified dynamic-link library was not found. SE_ERR_NOASSOC: r:= There is no application associated with the given filename extension”. SE_ERR_OOM: r:= 'Windows 95 only: There was not enough memory to complete the operation." SE_ERR_SHARE: r:='A sharing violation occurred.’ else Exit, end ShowMessage(r); end, Pagina 16 Fungées para o Delphi Como utilizar: procedure TForm! Button' Click(Sender: TObject); begin ExecFile('c:\windowslladrilhos.bmp'); end, Fazer um TEdit aceitar apenas numeros Na rotina abaixo, o TEdit sé aceitara numeros de 0 a 9 e 0 BackSpace (Chr(8)). Se vocé quiser a virgula também, coloque dentro do colchete DecimalSeparator procedure TForm! EditiKeyPress(Sender: TObject; var Key: Char); begin if not (Key inf'0'.’'9',Chr(8)]) then Key:= #0; end. Alterar o papel de parede do Windows procedure TFormt Button Click(Sender. TObject); var Arquivo: String begin Arquivo:= 'c:\windows\bitmap~1 bmp’: SystemParametersinfo(SPl_SetDeskWallPaper, 0, PChar(Arquivo), 0) end: Extrair o numero de cores do modo de video corrente var hnd: THandle; bitsPorPixel: integer; begin hnd:= GetDC( Handle ); bitsPorPixel:= GetDeviceCaps( hnd, BITSPIXEL ); 18 = 256 cores, 16 = high color, 24 = true color end. Habilitar e desabi I/ desabilita procedure hideTaskbar, var wndHandle : THandle; wndClass : array[0..50] of Char, begin StrCopy(@wndClass(0], '‘Shell_TrayWha'); wndHandle:= FindWindow(@wndClass(0], nil); ShowWindaw(wndHandle, SW_HIDE), end. barra de tarefas Pagina 17 Fungées para o Delphi Whabilita procedure showTaskbar, var wndHandle : THandle; wndClass : array[0..50] of Char, begin Str Copy(@wndClass{0], 'Shell_TrayWhd'); wndHandle:= FindWindow(@wndClass(0}, nil); ShowWindaw(wndHandle, SW_RESTORE), end, Habilitar e desabilitar ctri+alt+del I/ desabilita procedure TFormt Button Click(Sender. TObject); var numero: integer, begin SystemParametersinfo(97,Word(true) @numero,0); end: Whabilita procedure TForm! Button2Click(Sender: TObject); var numero: integer: begin SystemParametersinfa(97,Word(false) @numero,0); end. Alterar a data e a hora do sistema procedure TFormt Button Click(Sender: TObject); var SystemTime : TSystemTime; begin With SystemTime do begin HDefinindo o dia do sistema wYear= 1996; wMonth:= 5; wOay:= 10; MDefinindo a hora do sistema wHour:= 20; //hora wMinute:= 50; //minutos wSecond:= 59; //segundos end. NColocar a hora e data do sistema SetLocalTime(SystemTime); end Pagina 18 Fungées para o Delphi Extrair o tamanho de um arquivo function TForm1.TamArquivo(Arquivo: string): Integer, begin with TFileStream.Create(Arquivo, fmOpenRead or fmShareExclusive) do try Result := Size; finally Free end. end. Como utilizar: procedure TF orm! Button| Click(Sender: TObject); begin edit! text'= inttostr(TamArquivo(‘CAMINHO\NOMEDOARQUIVO)); end, Extrair 0 icone de um executavel Inclua a unit Shellapi na clausula uses do seu form. Image Picture.|con Handle:= Extractlcon(Handle PChar(‘c:\windows\calc.exe'),0); Verificando a memoria var MemoryStatus: TMemoryStatus; begin MemoryStatus.dwLength:= sizeof(MemoryStatus); GlobalMemoryStatus(MemoryStatus); Label! Caption := Total de memiaria fisica : ' + IntToStr(MemoryStatus.dwTotalPhys) end. {typedef struct_MEMORYSTATUS DWORD dwLenath; // sizeof(MEMORYSTATUS) DWORD dwMemoryLoad; // percentual de memoria em uso DWORD dwTotalPhys; // bytes de meméria fisica DWORD dwAvailPhys; // bytes livres de meméria fisica DWORD dwTotalPageFile; // bytes de paginacdo de arquivo DWORD dwAvailPageF ile; // bytes livres de paginacao de arquivo DWORD dwTotalVirtual; // bytes em uso de espago de endereco DWORD dwAvailVirtual; // bytes livres} Pagina 19 Fungées para o Delphi Numero de série do hd Function TF ormt .SerialNum(FDrive:String) :String; var Serial: DWord: DirLen, Flags: DWord: DLabel : Array(0..1 1] of Char, GetVolumelnformation(PChar(FDrive+'\'),dLabel,12,@Serial DirLen Flags,nil,0); Result := IntToHex(Serial,8); Except Result = end, end Mapear uma pasta na rede var err: DWord; PServer, PSenha, PLetra : PChar, Begin PServer := \\Caminho\Caminho' + #0; PLetra PSenha :="" ERR := WNetAddConnection ( PServer , PSenha , PLetra ); CASE ERR of ERROR_ACCESS_DENIED : ShowMessage ( ‘Acesso negado.' ); ERROR_ALREADY_ASSIGNED : ShowMessage ( ‘A letra do drive especificada ja esta conectada’ ) ERROR_BAD_DEV_TYPE : ShowMessage ( 'O tipa de dispositive e o tipo de recurso naa so compativeis.’ ERROR_BAD_DEVICE : ShowMessage ( ‘Letra invalida'); ERROR_BAD_NET_NAME:: ShowMessage (Nome do servidor nao é valid au nao pode ser lacalizado."); ERROR_BAD_PROFILE : ShowMessage ( ‘Formato incarreto de parametras.’ ); ERROR_CANNOT_OPEN_PROFILE : ShowMessage ( ‘Conexao permanente nao disponivel.’ ) ERROR_DEVICE_ALREADY_REMEMBERED : ShowMessage (‘Uma entrada para 0 dispositive especificado ja esta no perfil do usuario.’ ) ERROR_EXTENDED_ERROR : ShowMessage ( 'Erro de rede.’ ); ERROR_INVALID_PASSWORD : ShowMessage ( 'Senha especificada invalida.’ ) ERROR_NO_NET_OR_BAD_PATH : ShowMessage ( ‘A operacao ndo foi concluida porque a rede nao foi inicializada ou caminho ¢ invalido.' ); ERROR_NO_NETWORK : ShowMessage ( ‘A rede nao esta presente! ) Pagina 20 Fungées para o Delphi else if Err > 0 then ShowMessage (IntToStr(Er); end, end Pegar nome do usuario na rede function TForm( usuario : string: var NomedoUsuario : array{0..255] of char; buffSize : DWORD; begin buffSize := sizeOf(NomedoUsuario) GetUserName(@NomedoUsuario, buffSize) result:= NomedoUsuario;, end. Como utilizar: procedure TForm! Button' Click(Sender: TObject); begin ShowM essage (usuario) end, saber o estado das teclas Num lock, Caps lock e Scroll lock Para saber 0 estado das teclas acima citadas, utilize a fungao getkeystate em conjunto com o cédigo das teclas, ela retorna 0 se a tecla estiver OFF e 1 se a tecla estiver ON, assim If getkeystate If getkeystate If getkeystate If getkeystate If getkeystate If getkeystate (vk_numlack) = 0 then // Num lock esta OFF (vk_numlock) = 1 then // Num lock esta ON (vk_scroll) = 0 then // Scroll lack esta OFF (vk_scroll) = 1 then // Scroll lack esta ON (vk_CAPITAL) = 0 then // Caps lock esta OFF (vk_CAPITAL) = 1 then // Caps lock esta ON Testando drives function TForm1.TemDiscoNoDrive(const drive : char): boolean; var DriveNumero : byte; EMode : word; begin result := false; DriveNumero := ord(Drive); if DriveNumero >= ord('a’) then dec(DriveNumero $20), EMode := SetErrorMode(SEM_FAILCRITICALERRORS). Pagina 21

S-ar putea să vă placă și