Nos ainda estamos arrumando esta seção. Sabemos que sao poucas dicas, mas precisavamos começar de algum lugar.
Deixamos o texto original das dicas que nao sao de nossa autoria, pedimos desculpas a aquelas que nao colocamos o nome do autor, na epoca nao pensavamos em disponibiliza-los na net.
Se voce possuir alguma dica e quizer coloca-la nesta secao, pode envia-la para nos, pois teremos o maior prazer de coloca-las no ar.


Como marcar uma CheckBox sem o evento OnClick

Quando voce modifica o estado de uma TCheckBox, fixando o valor da propriedade CHECKED, o evento OnClick dela é disparado. Como abaixo:
CheckBox1.Checked := true;
faz o evento OnClick executar.
Entretanto, algumas vezes voce pode querer marcar ou desmarca-la sem disparar o evento OnClick.
Voce pode fazer isso mandando uma mensagem BM_SETCHECK para a CheckBox. Use o parametro WParam como 1 para marca-la, ou 0 para desmarca-la. O LParam desta mensagem sempre é zero:

CheckBox1.Perform(BM_SETCHECK, 0, 0);


Usando Drag e Drop

O exemplo de Drag e Drop que irei mostrar, pode facilmente ser implementado em itens de texto e objetos graficos.
  • Primeiramente coloque duas EDIT no seu form. Uma servira como receptora e a outra a fonte. Vamos manter os nomes atuais para ficar mais facil o entendimento. A Edit1 sera a fonte e a Edit2 a receptora.
  • Sete a propriedade DragMode da Edit1 como dmAutomatic.
  • No evento OnDragOver da edit2, coloque este codigo:
    Accept := true;
  • Agora va no evento OnDragDrop, da Edit2, e coloque:
    Edit2.Text := Edit1.Text;

    Agora rode o aplicativo e arraste o texto de Edit1 para Edit2.


    Salvando Edit em um txt

    No edit não há um comando especifico como no memo. Para salvar faça o seguinte em qualquer evento:
    var arq: TextFile;
    begin
    AssignFile(arq,'MeuArquivo.txt');
    Rewrite(arq);
    writeln(arq,edit1.text);
    CloseFile(arq);
    end;

    Executando outro progz de maneira diferente

    var
          P: Pchar;
          S: String; 
    begin     
          // Autorizacao de Menu
          S:='\DIRETORIO\NOME DO PROGRAMA';
          GetMem(P,Length(S) + 1);
          P :=StrPCopy(P,S);
          WinExec(P,sw_Show);
          FreeMem(P,Length(S) + 1);
    end;
    


    Alinhando formularios

      Para usar em aplicações MDI, coloque isto no OnCreate 
      do formulário...
        
        Top := (Application.MainForm.ClientHeight div 2) - Height div 2;
        Left := (Application.MainForm.ClientWidth div 2) - Width div 2;
        
    ...agora se o formulário estiver como fsNormal coloque assim.
        
    Top := (Screen.Height div 2) - Height div 2;
    Left := (Screen.Width div 2) - Width div 2;
        
    Ps.: A propriedade Position do Form tem que estar poDefault, Ok?  
    


    Alterando icone em tempo de execucao

    Application.Icon.LoadFromFile('C:\WINDOWS\ICONENOVO.ICO');


    Outra maneira de desligar o windows

          
  • desligar: start c:\windows\rundll.exe user.exe,exitwindows;
  • reiniciar: start c:\windows\rundll.exe user.exe,exitwindowsexec;

  • Zeros a esquerda

       Use a funcao Format:
       nZero := FORMAT('%*.*d', [tam, tam, numero]);
    


    Selecionar pasta

    
      uses
        ShellApi, Windows, ShlObj;
      
      interface
    
    function SelectFolder(wnd: HWND; Title: String): String;
    
      implementation
    
    function SelectFolder(wnd: HWND; Title: String): String;
      var
        lpItemID: PItemIDList;
        BrowseInfo: TBrowseInfo;
        DisplayName: array[0..MAX_PATH] of char;
        TempPath: array[0..MAX_PATH] of char;
      begin
        FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
        BrowseInfo.hwndOwner := wnd;
        BrowseInfo.pszDisplayName := @DisplayName;
        BrowseInfo.lpszTitle := PChar(Title);
        BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
        lpItemID := SHBrowseForFolder(BrowseInfo);
        if lpItemId <> nil then
         begin
           SHGetPathFromIDList(lpItemID, TempPath);
           Result := TempPath;
           GlobalFreePtr(lpItemID);
         end else
           Result := '';
      end;
    


    Abreviar nomes

                            
                            DelphiBahia - 1999 
                            http://www.delphibahia.eti.br 
                            [email protected]
    
    O bjetivo desta função é abreviar nomes que,
    em alguns casos, não cabem em um determinado 
    componente na tela ou fica muito grande para 
    ser impresso em um relatório. 
    
    O nome José Francisco Manoel da Siva é abreviado, 
    por esta função, para José F. M. da Silva. Ou pode-se
    abreviar nomes de estabelecimentos, tal como Casas de 
    Materiais de Construções Macedo ficaria abreviado para 
    Casas de M. de C. Macedo. 
    

    function AbreviaNome(Nome: String): String; var Nomes: array[1..20] of string; i, TotalNomes: Integer; begin Nome := Trim(Nome); Result := Nome; {Insere um espaço para garantir que todas as letras sejam testadas} Nome := Nome + #32; {Pega a posição do primeiro espaço} i := Pos(#32, Nome); if i > 0 then begin TotalNomes := 0; {Separa todos os nomes} while i > 0 do begin Inc(TotalNomes); Nomes[TotalNomes] := Copy(Nome, 1, i - 1); Delete(Nome, 1, i); i := Pos(#32, Nome); end; if TotalNomes > 2 then begin {Abreviar a partir do segundo nome, exceto o último.} for i := 2 to TotalNomes - 1 do begin {Contém mais de 3 letras? (ignorar de, da, das, do, dos, etc.)} if Length(Nomes[i]) > 3 then {Pega apenas a primeira letra do nome e coloca um ponto após.} Nomes[i] := Nomes[i][1] + '.'; end; Result := ''; for i := 1 to TotalNomes do Result := Result + Trim(Nomes[i]) + #32; Result := Trim(Result); end; end; end;


    Adicionar linhas a uma StringGrid

    Utilize a propriedade RowCount:
    inc (StringGrid1.RowCount);
    e:
    dec (StringGrid1.RowCount);


    Pintando celulas de uma StringGrid

    
    Primeiramente carregue as células do stringGrid e depois no evento
    DrawCell
    coloque o seguinte código:
    
    if CONDICAO then
      begin
         StringGrid1.Canvas.Font.Color  := clBlack;
         StringGrid1.Canvas.Brush.color := clBlue;
         StringGrid1.Canvas.TextRect(Rect, Rect.Left,
         Rect.Top,StringGrid1.Cells[ACol, ARow]);
      end;
    


    Furando o aplicativo

      procedure TForm1.Button1Click(Sender: TObject); 
      var 
        region, region2 : hrgn; 
        
      begin 
        region := CreateRectRgn(0,0,width,height); 
        region2 := CreateEllipticRgn(30,30,100,100); 
        CombineRgn(region, region, region2, RGN_DIFF); 
        SetWindowRgn(handle, region, true); 
        Form1.FormStyle:= fsStayOnTop; 
      end; 
    


    Criando componente em Run-Time

      var
        Botao  :  TButton;
      begin
        Botao := TButton.Create(TForm);
        with Botao do
          begin
           caption := 'Meu botao';
           Parent := TForm;
           height := 30;
           width := 80;
           left := (TForm.ClientWidth - width) div 2;
           top := (TForm.ClientHeight - height) div 2;
          end;
      end;