Pular para o conteúdo principal

Postagens

Palavra com a primeira letra em Maiúsculo (Delphi)

Para casos onde temos palavras que são armazenadas todas em maiúsculo, geralmente surge a necessidade de utiliza-la de uma maneira mais elegante, como o título sugere, então vamos lá: function Primeira_Letra_Maiuscula(p_texto: string): string; begin IF p_texto <> '' THEN result := UpperCase(Copy(p_texto,1,1))+LowerCase(Copy(p_texto,2,Length(p_texto))); end;

Consulta Top-N SQL Server

Esse tipo de consulta é útil em situações onde precisamos encontrar, por exemplo, os N maiores ou menores dentro de determinado grupo, os funcionários mais bem pagos, os que vendem mais, as mercadorias menos vendidas e assim por diante. No SQL Server utilizamos o predicado TOP para recuperar um determinado número de registros e ordenamos a consulta com o ORDER BY. Baixe aqui o script com a criação da tabela e os inserts para o teste. No exemplo abaixo desejamos encontrar os três funcionários que ganham mais: SELECT TOP 3 NOM_FUNC NOME, SAL_FUNC SALARIO FROM FUNCIONARIOS ORDER BY SAL_FUNC DESC Agora desejamos encontrar os três funcionários que possuem os menores salários: SELECT TOP 3 NOM_FUNC NOME, SAL_FUNC SALARIO FROM FUNCIONARIOS ORDER BY SAL_FUNC Podemos perceber que ambos os códigos são idênticos, precisamos apenas mudar a ordem na cláusula ORDER BY.

Centralizar Texto em Edit

Como todos sabemos o Edit mantém todo texto digitado a esquerda, o que não fica bem quando o usamos para a entrada de números, pois bem, o exemplo abaixo apresenta uma alternativa para centralizar um determinado valor dentro de um Edit: procedure EditChange(Sender: TObject); var vl_label : TLabel; //variável do tipo Label begin vl_label := TLabel.Create(self); //criamos um label WITH vl_label DO BEGIN Font.Name := TEdit(sender).Font.Name; //pegamos a fonte usada no edit Caption := TEdit(sender).Text; //pegamos o conteúdo do edit SendMessage(TEdit(sender).Handle, EM_SETMARGINS, EC_LEFTMARGIN, (TEdit(sender).Width-vl_label.Width) div 2); //centraliza no label e retorna para o edit END ; vl_label.Free; end ;

Remover pontos de nome de arquivo (Delphi)

O exemplo a seguir nos mostra como remover pontos de um nome de arquivo, deixando é claro o da extensão: procedure TForm1.Button1Click(Sender: TObject); var vl_a: integer; vl_i: integer; begin //verifica indice do ultimo ponto FOR vl_i:= Length(LabeledEdit1.Text) DOWNTO 1 DO BEGIN IF Copy(LabeledEdit1.Text, vl_i, 1) = '.' THEN BEGIN vl_a := vl_i; Break; END; END; //copia texto ignorando os pontos, exceto quando o ponto estiver no inidice encontrado //anteriormente FOR vl_i:= 1 TO Length(LabeledEdit1.Text) DO BEGIN IF ( Copy(LabeledEdit1.Text, vl_i, 1) <> '.' ) THEN LabeledEdit2.Text := LabeledEdit2.Text + Copy(LabeledEdit1.Text, vl_i, 1) ELSE IF ( vl_i = vl_a ) THEN LabeledEdit2.Text := LabeledEdit2.Text + Copy(LabeledEdit1.Text, vl_i, 1) END; end; Baixe o exemplo aqui .

Mover ponteiro do Mouse automaticamente (Delphi)

Em certas ocasiões desejamos fazer com que o usário veja determinada funcionalidade, ou mesmo tentamos indicar o melhor procedimento a tomar naquele momento, nada melhor como mover o ponteiro do mouse, já que concentramos certa atenção nele, então vamos ao exemplo: var vl_p: TPoint; begin vl_p.X := 315; vl_p.Y := 89; vl_p := ClientToScreen(vl_p); SetCursorPos(vl_p.X, vl_p.Y); end; Baixe o exemplo completo aqui .

Descobrir tipo do Arquivo (Delphi)

Segue um exemplo de como verificar o tipo de um determinado arquivo, digita-se o nome do arquivo juntamente com o caminho no Edit1, e ao clicar no botão o Edit2 recebe o tipo do arquivo: Function TipoArquivo(const p_File: String): String; var v_Inf: TSHFileInfo; begin IF SHGetFileInfo(PChar(p_File),0,v_Inf,Sizeof(v_Inf),SHGFI_TYPENAME) <> 0 THEN Result := StrPas(v_Inf.szTypeName) ELSE BEGIN Result := ExtractFileExt(p_File); Delete(Result,1,1); Result := Result +' File'; END; end; procedure TForm1.Button1Click(Sender: TObject); begin Edit2.Text := TipoArquivo(Edit1.Text); end; Baixe o exemplo aqui .

Trigger no Mysql

Uma trigger é um objeto de banco de dados associado a uma tabela, e de acordo com uma determinada ação executada nesta tabela a trigger é executada. Sintaxe: DELIMITER | CREATE TRIGGER trigger_nome -- nome da trigger trigger_tempo -- quando a trigger dispara(AFTER, BEFORE) trigger_evento -- evento que a dispara(INSERT, UPDATE, DELETE) ON tabela_nome -- tabela que a trigger faz referência FOR EACH ROW -- deve ser disparada para todos os registros trigger_comandos END; | DELIMITER ; Exemplo: DELIMITER | CREATE TRIGGER log_usuario AFTER INSERT ON usuarios FOR EACH ROW BEGIN INSERT INTO log SET user_id=NEW.id, data=NOW(); END; | DELIMITER ; Nesse exemplo foi criada uma trigger de log , que para cada inserção na tabela usuarios insere também um registro na tabela log .