News & Events
Outras dicas interessantes
- 24 de abril de 2007
- Posted by: Adriano Santos
- Category: codegear delphi Desenvolvimento dicas função function informações procedimento procedure
Nenhum comentário
Difficulty level not set for this Post
Quem trabalha com Delphi não pode deixar de conhecer as listas de discussão lista-delphi@yahoogrupos.com.br e delphi-br@yahoogrupos.com.br. As listas são bastante ativas e contam com mais de 5.000 associados que trocam ideias sobre métodos, funções, componentes e etc. Vale a pena conferir.
Eu frequentei e ainda frequento há anos. Passando por antigas dicas resolvi publicar algumas delas aqui no blog para que fique registrado.
Você já precisou clonar propriedades no Delphi? E aumentar o limite de caracteres do RichEdit? Pois bem, algumas dessas dicas podem ser vistas abaixo. Copie e cole as funções abaixo em sua unit de funções comuns e use em seus sistemas.
Siga @tdevrocks no Twitter e fique por dentro de todas as atualizações do blog.
1. Clonar propriedades de um componente para outro:
uses TypInfo; function CloneProperty(SourceComp, TargetComp: TObject; Properties: array of string): Boolean; var i: Integer@ begin Result := True; try for i := Low(Properties) to High(Properties) do begin if not IsPublishedProp(SourceComp, Properties[I]) then Continue; if not IsPublishedProp(TargetComp, Properties[I]) then Continue; if PropType(SourceComp, Properties[I]) <> PropType(TargetComp, Properties[I]) then Continue; case PropType(SourceComp, Properties[i]) of tkClass: SetObjectProp(TargetComp, Properties[i], GetObjectProp(SourceComp, Properties[i])); tkMethod: SetMethodProp(TargetComp, Properties[I], GetMethodProp(SourceComp, Properties[I])); else SetPropValue(TargetComp, Properties[i], GetPropValue(SourceComp, Properties[i])); end; end; except Result := False; end; end; procedure TForm1.Button1Click(Sender: TObject); begin if CloneProperty(Button1, Button2, ['Left', 'Font', 'PopupMenu', 'OnClick']) then ShowMessage('OK'); end;
2. Aumentando o limite de armazenamento de texto do RichEdit para mais de 64k.
procedure TForm1.Button1Click(Sender: TObject); begin RichEdit11.MaxLength := $7FFFFFF0; end; //oder: //or: procedure TForm1.Button1Click(Sender: TObject); begin SendMessage(RichEdit1.Handle, EM_EXLIMITTEXT, 0, $7FFFFFF0); end;
3. Deixando os itens do ListView coloridos:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); begin with ListView1.Canvas.Brush do begin case Item.Index of 0: Color := clYellow; 1: Color := clGreen; 2: Color := clRed; end; end; end;
4. Incluindo ProgressBar num ListView:
procedure TForm1.Button1Click(Sender: TObject); var r: TRect; pb: TProgressBar; begin Listview1.Columns.Add.Width := 100; Listview1.Columns.Add.Width := 200; Listview1.ViewStyle := vsReport; Listview1.Items.Add.Caption := 'Text'; r := Listview1.Items[0].DisplayRect(drBounds); r.Left := r.Left + Listview1.columns[0].Width; r.Right := r.Left + Listview1.columns[1].Width; pb := TProgressBar.Create(Self); pb.Parent := Listview1; pb.BoundsRect := r; pb.Position := 30; Listview1.Items[0].Data := pb; end; // Change the ProgressBar Position // ProgressBar Position ändern procedure TForm1.Button2Click(Sender: TObject); var pb: TProgressBar; begin pb := TProgressBar(Listview1.Items[0].Data); pb.StepIt; end;
Adriano Santos é especialista em linguagens de desenvolvimento, autor de diversos artigos e membro do Embarcadero Community Evanglist Program. Siga-o no twitter @asrsantos e fique por dentro de tudo que acontece nos bastidores de TDevRocks.
Author: Adriano Santos
Adriano Santos é especialista em linguagens de desenvolvimento, Embarcadero MVP, possui +1000 artigos e vídeo-aulas publicadas em revistas e websites especializados, ex-editor chefe das revistas ClubeDelphi e WebMobile. Atualmente Diretor de Operações na startup GET IT! Technology e Consultor Senior na Embarcadero do Brasil.