Estava procurando uma apostila sobre Object Pascal e encontrei uma excelente.
É uma apostila do projeto Castle (framework para criação de jogos em Lazarus).
Link: https://castle-engine.io/modern_pascal_introduction.pdf
Mostrando postagens com marcador Delphi. Mostrar todas as postagens
Mostrando postagens com marcador Delphi. Mostrar todas as postagens
Links sobre Delphi
Geral
Freebyte's Guide to freeDelphi programming
Página em inglês com muito conteúdo sobre Delphi.
Ela é um índice para vários outros sites sobre Delphi.
Componentes
ZeosDB
Componente para conectar em bancos de dados. É open source e aceita vários bancos de dados.
Project JEDI
Vários componentes visuais e não visuais para Delphi.
Ferramentas
CnPack
É um plugin para a IDE do Delphi que adiciona várias funcionalidades, auxiliando na programação.
O CnPack possui alguns projetos além do plugin para a IDE, para fazer o download do plugin acesse: http://www.cnpack.org/showdetail.php?id=797&lang=en. No fim da página tem o link de download.
Freebyte's Guide to freeDelphi programming
Página em inglês com muito conteúdo sobre Delphi.
Ela é um índice para vários outros sites sobre Delphi.
Componentes
ZeosDB
Componente para conectar em bancos de dados. É open source e aceita vários bancos de dados.
Project JEDI
Vários componentes visuais e não visuais para Delphi.
Ferramentas
CnPack
É um plugin para a IDE do Delphi que adiciona várias funcionalidades, auxiliando na programação.
O CnPack possui alguns projetos além do plugin para a IDE, para fazer o download do plugin acesse: http://www.cnpack.org/showdetail.php?id=797&lang=en. No fim da página tem o link de download.
Funções para trabalhar com strings no Delphi
Esou postando uma unit que achei no documento de 900 dicas para Delphi.
Essa unit possui várias funções para tratar strings:
Essa unit possui várias funções para tratar strings:
Alternativas free para o Delphi
Atualmente conheço duas alternativas free para o Delphi.
Não conheço muita coisa sobre o CodeTyphon, mas pelo que li ele é uma distribuição do Lazarus.
Função em Delphi para converter minutos em horas formatada
Função para delphi que recebe um valor em segundos e retorna o valor em horas, minutos e segundos formatada.
Exemplo: se a função receber o valor 61, ela vai retornar o valor 00:01:01
Exemplo: se a função receber o valor 61, ela vai retornar o valor 00:01:01
function FormatSecsToHMS(Secs: LongInt): string; var Hrs, Min: Word; horas, minutos, segundos: string; begin Hrs := Secs div 3600; Secs := Secs mod 3600; Min := Secs div 60; Secs := Secs mod 60; if Hrs = 0 then horas := '00' else horas := IntToStr(Hrs); if Min = 0 then minutos := '00' else if(Min < 10) then minutos := '0' + IntToStr(Min) else minutos := IntToStr(Min); if Secs = 0 then segundos := '00' else if(Secs < 10) then segundos := '0' + IntToStr(Secs) else segundos := IntToStr(Secs); Result := horas + ':' + minutos + ':' + segundos; end;
Principais propriedades dos componentes e seus significados - Delphi
Segue abaixo as propriedades mais comuns dos componentes no Delphi e seus significados.
Propriedade | Significado |
---|---|
Align | Determina como o componente será alinhado no seu container - [alNone, alTop, alBottom, alLeft, alRight, alClient] |
Caption | Legenda do componente (& indica a tecla de atalho) |
Cursor | Desenho que representa o cursor da mouse [crDefault, crNone, crArrow, crCross , crIBeam, crSize, crSizeNESW, crSizeNS, crSizeNWSE, crSizeWE, crUpArrow, crHourGlass, crDrag, crNoDrop, crHSplit, crVSplit, crMultiDrag, crSQLWait, crNo, crAppStart, crHelp, crHandPoint] |
Name | Nome da instância do componente |
Left | Distância em Pixel da borda esquerda do componente até a borda esquerda do FORM |
Top | Distância em pixel da borda superior do componente até a borda superior do FORM |
Height | Altura em pixel do componente |
Width | Largura em pixel do componente |
ComponentCount | O número de componentes possuídos por um componente container |
Components | Uma matriz de componentes possuídos por um componente container |
Color | Indica a cor de fundo do componente |
Font | Fonte utilizada no componente |
Ctl3D | Define a aparência 3D ou 2D de um componente |
Enabled | Define se o componente esta ou não ativo |
Visible | Define se o componente esta ou não visível |
Hint | String utilizada na exibição de dicas instantâneas |
ShowHint | Define se o hint será mostrado automaticamente |
PopupMenu | Menu que será acionado com o botão direito do mouse |
TabOrder | A ordem de tabulação do componente |
TabStop | Indica se o componente será ponto de parada para a tecla TAB |
HelpContext | Número utilizado para chamar o help on-line sensível ao contexto |
Programa para instalar componentes no Delphi
O Delphipi é um programa que facilita em muito a instalação de componentes.
Para baixar ele acesse: http://www.mediafire.com/?8t6zphs7ev0krpo
Se você está com dúvida de como instalar componentes no Delphi baixe esse programa que ele fará todo o trabalho para você.
Qualquer dúvida me avisem.
Para baixar ele acesse: http://www.mediafire.com/?8t6zphs7ev0krpo
Se você está com dúvida de como instalar componentes no Delphi baixe esse programa que ele fará todo o trabalho para você.
Qualquer dúvida me avisem.
Conhecendo o CnPack
O CnPack é um plugin open-source para o Delphi que adiciona várias funcionalidades a sua IDE.
Eu o o utilizo já faz algum tempo e sempre que eu instalo o delphi a primeira coisa que instalo depois é o CnPack.
Ele funciona nas seguintes versões:
O site oficial do projeto é: http://www.cnpack.org/index.php?lang=en
O link direto para baixá-lo é: http://www.cnpack.org/download.php?id=417&lang=en
Eu o o utilizo já faz algum tempo e sempre que eu instalo o delphi a primeira coisa que instalo depois é o CnPack.
Ele funciona nas seguintes versões:
- Delphi 5
- Delphi 6
- Delphi 7,
- C++Builder 5 e 6
- BDS 2005 2006
- RAD Studio 2007 2009 2010 2011
![]() |
Tela de criação de message box do CnPack |
O site oficial do projeto é: http://www.cnpack.org/index.php?lang=en
O link direto para baixá-lo é: http://www.cnpack.org/download.php?id=417&lang=en
Delphi - Gerar miniatura de imagem
Função que gera a miniatura:
Como usar:
procedure CreateThumbnail(InStream, OutStream: TStream; Width, Height: integer; FillColor: TColor); var JpegImage: TJpegImage; Bitmap: TBitmap; Ratio: double; ARect: TRect; AHeight, AHeightOffset: integer; AWidth, AWidthOffset: integer; begin // Check for invalid parameters if Width < 1 then raise Exception.Create('Invalid Width'); if Height < 1 then raise Exception.Create('Invalid Height'); JpegImage := TJpegImage.Create; try // Load the image JpegImage.LoadFromStream(InStream); // Create bitmap, and calculate parameters Bitmap := TBitmap.Create; try Ratio := JpegImage.Width / JpegImage.Height; if Ratio > 1 then begin AHeight := Round(Width / Ratio); AHeightOffset := (Height - AHeight) div 2; AWidth := Width; AWidthOffset := 0; end else begin AWidth := Round(Height * Ratio); AWidthOffset := (Width - AWidth) div 2; AHeight := Height; AHeightOffset := 0; end; Bitmap.Width := Width; Bitmap.Height := Height; Bitmap.Canvas.Brush.Color := FillColor; Bitmap.Canvas.FillRect(Rect(0, 0, Width, Height)); // StretchDraw original image ARect := Rect(AWidthOffset, AHeightOffset, AWidth + AWidthOffset, AHeight + AHeightOffset); Bitmap.Canvas.StretchDraw(ARect, JpegImage); // Assign back to the Jpeg, and save to the file JpegImage.Assign(Bitmap); JpegImage.SaveToStream(OutStream); finally Bitmap.Free; end; finally JpegImage.Free; end; end;
Como usar:
procedure MakeThumbnail(const InFileName, OutFileName: string; Width, Height: integer; FillColor: TColor); var InStream, OutStream: TFileStream; begin InStream := TFileStream.Create(InFileName, fmOpenRead); try OutStream := TFileStream.Create(OutFileName, fmOpenWrite or fmCreate); try CreateThumbnail(InStream, OutStream, Width, Height, FillColor); finally OutStream.Free; end; finally InStream.Free; end; end;
Delphi - Percorrer todos os componentes do formulário
Esta rotina serve apenas para ilustrar como devemos fazer para acessar todos os componentes de um formulário através de um "for".
Uma utilização para isso poderia ser a seguinte: mudar a cor de fundo de todos os Edits para amarelo.
var i: integer; begin for i := 0 to ComponentCount - 1 do ShowMessage(Components[i].ClassName); end;
Uma utilização para isso poderia ser a seguinte: mudar a cor de fundo de todos os Edits para amarelo.
Data por extenso no Delphi
Função que retorna uma string com a data por extenso com o dia da semana.
Definição de visibilidade no Delphi
Ao declarar uma variável, um objeto, uma procedure ou uma function no delphi você pode especificar qual será seu nível de visibilidade. Abaixo segue os quatro tipos possíveis:
- private: Essas partes de seu objeto são acessíveis apenas para o código na mesma unidade que a implementação do seu objeto. Use esta diretiva para ocultar detalhes de implementação de seus objetos dos usuários e para impedi-los de modificar membros que possam afetar seu objeto.
- protected: Os membros protected do seu objeto podem ser acessados por descendentes do seu objeto. Essa capacidade permite que você oculte os detalhes de implementação do seu objeto dos usuários ao mesmo tempo que fornece flexibilidade máxima para descendentes do objeto.
- public: Esses campos e métodos são acessíveis de qualquer lugar do seu programa. Construtores e destruidores de objeto devem ser sempre public.
- published: Runtime Type Information (RTTI) a ser gerada para a parte publicada de seus objetos permite que outras partes de sua aplicação obtenham informações sobre as partes publicadas do seu objeto. O Object Inspector usa a RTTI para construir sua lista de propriedades. Esse tipo de visibilidade é muito importante para quem for desenvolver componentes.
TObjeto = class private VariavelPrivate: Integer; protected procedure ProcedureProtected; public constructor ConstrutorPublic; destructor DestruidorPublic; published property UmaPropriedade read VariavelPrivate write VariavelPrivate; end;
Para que serve o overload no Delphi?
O overload nos permite escrever procedures ou functions com o mesmo nome desde que possuam quantidades de parâmetros ou tipos diferentes.
Por exemplo, todos os casos abaixo estão corretos:
procedure Teste(I: Integer); overload; procedure Teste(S: string); overload; procedure Teste(D: Double); overload; procedure Teste(D: Double; S: string); overload;
Ao chamar a função Teste, o programa vai chamar a correta de acordo com os parâmetros passados.
Delphi - Como obter uma string entre outras duas
Essa função eu peguei arquivo "900 dicas de delphi - dtdelphi28", não lembro de onde baixei esse arquivo, mas é muito bom.
Exemplo:
function Copy(Frase,Inicio,Fim:String):String; { função criada por Marcus Vitoratti } var iAux,kAux:Integer; begin Result:=''; if (Pos(Fim,Frase) <> 0) and (Pos(Inicio,Frase)<>0) then begin iAux:=Pos(Inicio,Frase)+length(Inicio); kAux:=Pos(Fim,Frase); Result:=Copy(Frase,iAux,kAux-iAux); end; end;
Exemplo:
label1.caption:= Copy('==aa==Título da página+++aa','==aa==','+++aa'); //retornará a string 'Título da página'.
Delphi - Desabilitar (Ctrl+Alt+Del), (Alt+Tab) e (Ctrl+Esc)
Instrução para habilitar ou desabilitar as teclas (Ctrl+Alt+Del),(Alt+Tab), (Ctrl+Esc)
var OldValue : LongBool; begin {liga a trava} SystemParametersInfo(97, Word(True), @OldValue, 0); {desliga a trava} SystemParametersInfo(97, Word(False), @OldValue, 0); end;
Operadores lógicos - Delphi, C++ e VB
Essa tabela compara os operadores lógicos das linguagens Pascal (utilizada pelo Delphi) C/C++ e Visual Basic (VB).
Operador | Pascal | C/C++ | Visual Basic |
Atribuição | := | = | = |
Comparação | = | == | = ou Is* |
Não igual a | <> | != | <> |
Menor que | < | < | < |
Maior que | > | > | > |
Menor que ou igual a | <= | <= | <= |
Maior que ou igual a | >= | >= | >= |
E lógico | and | && | And |
Ou lógico | or | || | Or |
Não lógico | not | ! | Not |
Usando SQLite com o Delphi
O SQLite é um banco de dados free cuja a principal vantagem é que para ele funcionar não precisa de instalação, basicamente basta copiar a dll dele junto com a sua aplicação e começar a utilizá-lo.
No caso do Delphi ou Lazarus, para conectar no banco de dados eu utilizo o componente ZeosDB, para baixar acesse: https://sourceforge.net/projects/zeoslib/
O ZeosDB é um componente opensource que permite conectar, executar consultas, scripts em vários bancos de dados como MySQL, Oracle, etc...
Para conectar em um banco de dados sqlite com o ZeosDB basta colocar o componente TZConnection no form e depois setar as seguintes propriedades:
Database = coloque aqui o endereço do seu banco de dados, por exemplo: "c:\programa\banco.sqlite"
Protocol = selecione a opção "sqlite"
LibraryLocation = coloque a dll do sqlite na mesma pasta da sua aplicação e depois nesse campo coloque o nome da dll, por exemplo "sqlite.dll"
Para fazer o download da dll acesse: https://www.sqlite.org/download.html
Para criar e administrar o banco de dados eu utilizo a ferramenta Sqlite Expert Personal, para fazer o download acesse: http://www.sqliteexpert.com/download.html
Espero ter ajudado, qualquer dúvida postem nos comentários.
No caso do Delphi ou Lazarus, para conectar no banco de dados eu utilizo o componente ZeosDB, para baixar acesse: https://sourceforge.net/projects/zeoslib/
O ZeosDB é um componente opensource que permite conectar, executar consultas, scripts em vários bancos de dados como MySQL, Oracle, etc...
Para conectar em um banco de dados sqlite com o ZeosDB basta colocar o componente TZConnection no form e depois setar as seguintes propriedades:
Database = coloque aqui o endereço do seu banco de dados, por exemplo: "c:\programa\banco.sqlite"
Protocol = selecione a opção "sqlite"
LibraryLocation = coloque a dll do sqlite na mesma pasta da sua aplicação e depois nesse campo coloque o nome da dll, por exemplo "sqlite.dll"
Para fazer o download da dll acesse: https://www.sqlite.org/download.html
Para criar e administrar o banco de dados eu utilizo a ferramenta Sqlite Expert Personal, para fazer o download acesse: http://www.sqliteexpert.com/download.html
Espero ter ajudado, qualquer dúvida postem nos comentários.
Listar todos os arquivos do diretório corrente
Esta função retorna todos os arquivos do diretório corrente em um objeto TStringList.
Como usar:
Como parâmetro de entrada informe a máscara dos tipos de arquivos que deseja listar, por exemplo: para listar todos os arquivos .zip coloque como parâmetro de entrada: '*.zip'
function FillDir(Const AMask: string): TStringList; var SearchRec : TSearchRec; intControl : integer; begin Result := TStringList.create; intControl := FindFirst( AMask, faAnyFile, SearchRec ); if intControl = 0 then begin while (intControl = 0) do begin Result.Add( SearchRec.Name ); intControl := FindNext( SearchRec ); end; FindClose( SearchRec ); end; end;
Como usar:
Como parâmetro de entrada informe a máscara dos tipos de arquivos que deseja listar, por exemplo: para listar todos os arquivos .zip coloque como parâmetro de entrada: '*.zip'
Assinar:
Postagens (Atom)