Ir para conteúdo
Fórum Script Brasil
  • 0

Comandos para os seus projectos


Lukas Ssaraiva

Pergunta

Decedi começar a ajudar o forum ... Ca vai alguns comandos para os vossos projectos delphi :D

1. Desabilita o botão Fechar do Formulário (topo)

procedure TForm1.FormCreate(Sender: TObject);
var
  hwndHandle : THANDLE;
  hMenuHandle : HMenu;
begin
  hwndHandle := Self.Handle;
  if (hwndHandle <> 0) then
  begin
    hMenuHandle := GetSystemMenu(hwndHandle, FALSE);
    if (hMenuHandle <> 0) then
      DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
  end;
end;

2. Mudar a cor da linha de um DBGrid (topo)

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; .....);
begin
  if odd(field.DataSet.RecNo) then
    DBGrid1.Canvas.Font.Color := clBlue
  else DBGrid1.Canvas.Font.Color := clWhite;
  DBGrid1.DefaultDrawDataCell(Rect, dbgrid1.columns[datacol].field, state);
end;

3. Inicializar vários EDITs em um formulário (topo)

procedure TForm1.Button1Click(Sender: TObject);
var contador : integer;
begin
  for contador := 0 to (Form1.ControlCount - 1) do
    if Form1.Controls[contador].ClassName = 'TEdit' then
      (Form1.Controls[contador] as TEdit).Text := '';
end;

4. Nome do computador (topo)

function NomeComputador : String;
var
  lpBuffer : PChar;
  nSize : DWord;
const Buff_Size = MAX_COMPUTERNAME_LENGTH + 1;
begin
  nSize := Buff_Size;
  lpBuffer := StrAlloc(Buff_Size);
  GetComputerName(lpBuffer,nSize);
  Result := String(lpBuffer);
  StrDispose(lpBuffer);
end;

5. Trocar a resolução de vídeo (topo)

function TrocaResolucao(X, Y: word): Boolean;
var lpDevMode: TDeviceMode;
begin
  if EnumDisplaySettings(nil, 0, lpDevMode) then
  begin
    lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
    lpDevMode.dmPelsWidth := X;
    lpDevMode.dmPelsHeight:= Y;
    Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
  end;
end;

6. Executar Pack em Tabelas Paradox (topo)

procedure ParadoxPack(Table : TTable);
var
  TBDesc : CRTblDesc;
  hDb: hDbiDb;
  TablePath: array[0..dbiMaxPathLen] of char;
begin
  FillChar(TBDesc,Sizeof(TBDesc),0);
  with TBDesc do
  begin
    StrPCopy(szTblName,Table.TableName);
    StrPCopy(szTblType,szParadox);
    bPack := True;
  end;
  hDb := nil;
  Check(DbiGetDirectory(Table.DBHandle, True, TablePath));
  Table.Close;
  Check(DbiOpenDatabase(nil,'STANDARD',dbiReadWrite,dbiOpenExcl,nil,0,nil,nil,hDb));
  Check(DbiSetDirectory(hDb, TablePath));
  Check(DBIDoRestructure(hDb,1,@TBDesc,nil,nil,nil,False));
  Table.Open;
end;

7. Esconder a aplicação da barra de tarefas (topo)

var H : HWnd;
begin
  H := FindWindow(Nil,'Project1');
  if H <> 0 then
    ShowWindow(H,SW_HIDE);
end;

8. Travar as teclas: Alt+Tab, Ctrl+Esc, Ctrl+Alt+Del (topo)

var OldValue : LongBool;
begin
  SystemParametersInfo(97, Word(True), @OldValue, 0);
end;

Destravar as teclas: Alt+Tab, Ctrl+Esc, Ctrl+Alt+Del

var OldValue : LongBool;
begin
  SystemParametersInfo(97, Word(False), @OldValue, 0);
end;

9. Desconectar uma unidade de rede mapeada (topo)

function DesconectaRede(Unidade:Pchar;ForcaCancel:boolean):String;
begin
  WNetCancelConnection2(Unidade,0,ForcaCancel);
  Case GetLastError() of
    1205: Result := 'Não foi possível abrir o perfil';
    1206: Result := 'Perfil do usuário não encontrado ou inválido';
    1208: Result := 'Ocorreu um Erro específico na rede';
    2138: Result := 'Rede não encontrada ou fora do ar';
    2250: Result := 'Mapeamento inválido ou não encontrado';
    2401: Result := 'Existem muitos arquivos abertos';
    else Result := 'Unidade disconectada com sucesso';
  end;
end;

10. Retorna o IP da Máquina (topo)

function GetIP:string;//--> Declare a Winsock na clausula uses da unit
var
  WSAData: TWSAData;
  HostEnt: PHostEnt;
  Name:string;
begin
  WSAStartup(2, WSAData);
  SetLength(Name, 255);
  Gethostname(PChar(Name), 255);
  SetLength(Name, StrLen(PChar(Name)));
  HostEnt := gethostbyname(PChar(Name));
  with HostEnt^ do
    Result:=Format('%d.%d.%d.%d',[Byte(h_addr^[0]),
              Byte(h_addr^[1]),Byte(h_addr^[2]),Byte(h_addr^[3])]);
  WSACleanup;
end;

11. Retorna o Nome do Usuário logado na rede (topo)

function LogUser : String; //Declare Registry na clausula uses da unit
var Registro: TRegistry;
begin
  Registro := TRegistry.Create;
  Registro.RootKey := HKEY_LOCAL_MACHINE;
  if Registro.OpenKey('Network\Logon', false) then
    result := Registro.ReadString('username');
  Registro.Free;
end;

12. Copiar um arquivo de um lugar para outro (topo)

Procedure CopyFile( Const sourcefilename, targetfilename: String );
Var S, T: TFileStream;
Begin
  S := TFileStream.Create( sourcefilename, fmOpenRead );
  try
    T := TFileStream.Create( targetfilename, fmOpenWrite or fmCreate );
    try
      T.CopyFrom(S, S.Size );
    finally
      T.Free;
    end;
  finally
    S.Free;
  end;
end;

13. Capturar a tela em um TBitmap (topo)

function CaptureScreenRect( ARect: TRect ): TBitmap;
var ScreenDC: HDC;
begin
  Result := TBitmap.Create;
  with Result, ARect do
  begin
    Width := Right - Left;
    Height := Bottom - Top;
    ScreenDC := GetDC( 0 );
    try
      BitBlt( Canvas.Handle, 0, 0, Width, Height, ScreenDC, Left, Top, SRCCOPY );
    finally
      ReleaseDC( 0, ScreenDC );
    end;
  end;
end;
// Exemplo: Image1.picture.Assign(CaptureScreenRect(Rect(0,0,Width,Height)));

14. Saber qual a impressora padrão do Windows (topo)

function CorrentPrinter :String; //Declare a unit Printers na clausula uses
var
  Device : array[0..255] of char;
  Driver : array[0..255] of char;
  Port : array[0..255] of char;
  hDMode : THandle;
begin
  Printer.GetPrinter(Device, Driver, Port, hDMode);
  Result := Device+' na porta '+Port;
end;

15. Função de Criptografia de 32 Bits (topo)

Para criptografar passe como paramêtros 3 valores inteiros quaisquer.
Para referter a criptografia utilize os mesmos valores

{$R-} {$Q-}
function EncryptSTR(const InString:string; StartKey,MultKey,AddKey:Integer): string;
var I : Byte;
begin
  Result := '';
  for I := 1 to Length(InString) do
  begin
    Result := Result + CHAR(Byte(InString[I]) xor (StartKey shr 8));
    StartKey := (Byte(Result[I]) + StartKey) * MultKey + AddKey;
  end;
end;

function DecryptSTR(const InString:string; StartKey,MultKey,AddKey:Integer): string;
var I : Byte;
begin
  Result := '';
  for I := 1 to Length(InString) do
  begin
    Result := Result + CHAR(Byte(InString[I]) xor (StartKey shr 8));
    StartKey := (Byte(InString[I]) + StartKey) * MultKey + AddKey;
  end;
end;
{$R+} {$Q+}

16. Função ocultar a Barra de Tarefas (topo)

procedure SetTaskBar(Visible: Boolean);
var
  wndHandle : THandle;
  wndClass : array[0..50] of Char;
begin
  StrPCopy(@wndClass[0],'Shell_TrayWnd');
  wndHandle := FindWindow(@wndClass[0], nil);
  If Visible = True then
    ShowWindow(wndHandle, SW_RESTORE)
  else ShowWindow(wndHandle, SW_HIDE);
end;

17. Função ocultar o Botão Iniciar (topo)

procedure EscondeIniciar(Visible:Boolean);
Var taskbarhandle, buttonhandle : HWND;
begin
  taskbarhandle := FindWindow('Shell_TrayWnd', nil);
  buttonhandle := GetWindow(taskbarhandle, GW_CHILD);
  if Visible then
    ShowWindow(buttonhandle, SW_RESTORE) {mostra o botão}
  else ShowWindow(buttonhandle, SW_HIDE); {esconde o botão}
end;

18. Função para tornar o FORM Não-Retangular (topo)

procedure TForm1.FormResize;
var Region : HRGN;
begin
  Region := CreateEllipticRgn(0,0,width,height);
  SetWindowRgn(Handle, Region, True);
end;

19. Linha e coluna do curso em um MEMO (topo)

Procedure PosicaoMemo (M : TMemo; Var Linha, Coluna : Integer);
Begin
  Linha := M.Perform (EM_LINEFROMCHAR, M.SelStart, 0);
  Coluna := M.SelStart - M.Perform (EM_LINEINDEX, Linha, 0);
End;

20. Como deletar uma pasta com arquivos e subpastas dentro (topo)

procedure DeletaDir(const RootDir:string);
var
  SearchRec: tSearchREC;
  Erc:Integer;
Begin
  try
    {$I-}
    ChDir(rootdir);
    if IOResult <> 0 then
      Exit;
    FindFirst('*.*', faAnyFile, SearchRec);
    Erc:=0;
    while Erc=0 do
    begin
      if ((searchRec.Name <> '.') and (searchrec.Name<>'..')) then
        if (SearchRec.Attr and faDirectory>0) then
          DeletaDir(SearchRec.Name)
        Else DeleteFile(Searchrec.Name);
      Erc:=FindNext ( SearchRec);
      Application.ProcessMessages;
    end;
  finally
    If Length (RootDir)>3 then
      Chdir('..');
  end;
  RmDir(rootDir);
  {$I+}
End;

21. Função para ZERAR o valor de um campo Auto-Incremento (topo)

function ResetAutoInc(FileName: TFileName; Base: Longint): Boolean;
//FileName é o nome da tabela, incluindo o caminho. Base é novo valor para o campo.
begin
  with TFileStream.Create(FileName, fmOpenReadWrite) do
    Result := (Seek($49, soFromBeginning) = $49) and (Write(Base, 4) = 4);
end;

22. Função para formatar Disquetes (topo)

{implementation section}
....
const SHFMT_ID_DEFAULT = $FFFF;
// Formating options
SHFMT_OPT_QUICKFORMAT = $0000;
SHFMT_OPT_FULL = $0001;
SHFMT_OPT_SYSONLY = $0002;
// Error codes
SHFMT_ERROR = $FFFFFFFF;
SHFMT_CANCEL = $FFFFFFFE;
SHFMT_NOFORMAT = $FFFFFFFD;

function SHFormatDrive(Handle: HWND; Drive, ID, Options: Word): LongInt; stdcall; external 'shell32.dll' name 'SHFormatDrive'

procedure TForm1.button1Click(Sender: TObject);
var retCode: LongInt;
begin
  retCode:= SHFormatDrive(Handle, 0, SHFMT_ID_DEFAULT, SHFMT_OPT_QUICKFORMAT);
  if retCode < 0 then ShowMessage('Could not format drive');
end;

23. Fazendo uma janela filha de outra sem usar MDI (topo)

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params); { call the inherited first }
  with Params do
  begin
    Style := Style or WS_CHILD; { add a style flag }
    WndParent := Application.MainForm.Handle;
  end;
end;

24. Abrindo e Fechando a bandeja do drive de CD-ROM (topo)

Para Abrir:
mciSendString('Set cdaudio door open wait', nil, 0, handle);

Para Fechar:
mciSendString('Set cdaudio door open wait', nil, 0, handle);

25. Obtendo a Data e a Hora de um Arquivo (topo)

function GetFileDate(Arquivo: String): String;
var FHandle: integer;
begin
  FHandle := FileOpen(Arquivo, 0);
  try
    Result := DateTimeToStr(FileDateToDateTime(FileGetDate(FHandle)));
  finally
    FileClose(FHandle);
  end;
end;

26. Testando a impressora se está OnLine (topo)

function PrinterOnLine : Boolean;
Const
  PrnStInt : Byte = $17;
  StRq : Byte = $02;
  PrnNum : Word = 0; { 0 para LPT1, 1 para LPT2, etc. }
Var nResult : byte;
Begin (* PrinterOnLine*)
  Asm
    mov ah,StRq;
    mov dx,PrnNum;
    Int $17;
    mov nResult,ah;
  end;
  PrinterOnLine := (nResult and $80) = $80;
End;

27. Obtendo a letra do drive de CD-ROM (topo)

function FindFirstCDROMDrive: Char;
var
  drivemap, mask: DWORD;
  i: Integer;
  root: String;
begin
  Result := #0;
  root := 'A:\';
  drivemap := GetLogicalDrives;
  mask := 1;
  for i:= 1 To 32 Do
  begin
    if (mask and drivemap) <> 0 Then
      if GetDriveType( PChar(root) ) = DRIVE_CDROM Then
      begin
        Result := root[1];
        Break;
      end;
    mask := mask shl 1;
    Inc( root[1] );
  End;
End;

28. Obtendo o número serial do HD (topo)

function SerialNumber(FDrive:String) :String;
var
  Serial:DWord;
  DirLen,Flags: DWord;
  DLabel : Array[0..11] of Char;
begin
  Try
    GetVolumeInformation(PChar(FDrive+':\'),dLabel,12,@Serial,DirLen,Flags,nil,0);
    Result := IntToHex(Serial,8);
  Except
    Result :='';
  end;
end;

29. Converte um número binário para inteiro (topo)

function BinToInt(Value: String): LongInt;
{Converte um numero binário em Inteiro}
var i,Size: Integer;
begin
  Result := 0;
  Size := Length(Value);
  for i:=Size downto 0 do
    if Copy(Value,i,1)='1' then
      Result := Result+(1 shl i);
end;

30. Alterar atributos de um arquivo (topo)

var Attrib: integer;
begin
  Attrib:=FileGetAttr('C:\ARQUIVO.XYZ');
  if Attrib<>-1 then
  begin
    Attrib:=Attrib and not faReadOnly;
    if FileSetAttr('C:\ARQUIVO.XYZ', Attrib)=0 then
      Alteração Efetuada
    else Windows code error;
  end;
end;

31. Carregando um cursor animado (topo)

procedure TForm1.Button2Click(Sender: TObject);
const cnCursorID = 1;
begin
  Screen.Cursors[cnCursorID]:=LoadCursorFromFile('drive:\caminho\arquivo.ani' );
  Cursor := cnCursorID;
end;

32. Definindo o tamanho Mínimo e Máximo de um Formulário (topo)

procedure TForm1.WMGetMinMaxInfo(var MSG: TMessage);
begin
  inherited;
  with PMinMaxInfo(MSG.lparam)^ do
  begin
    ptMinTRackSize.X := 300;
    ptMinTRackSize.Y := 150;
    ptMaxTRackSize.X := 350;
    ptMaxTRackSize.Y := 250;
  end;
end;

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...