Hoje, vamos aprender como movimentar (arrastar) qualquer objeto na tela do formulario, utilizando apenas o mouse. Para o objeto ser arrastado em qualquer direcao, sao necessarios alguns ajustes.Neste exemplo, vamos utilizar uma Label (TLabel da Paleta Standart) e um Botao (TBitBtn da Paleta Additional).Nome do formulario sera: FMovObj.>> Vamos precisar de tres procedimentos: ControlMouseDown, ControlMouseUp, ControlMouseMove;>> De uma classe TMoveControle do tipo TControl;Observacao: A classe TMoveControle sera declarado em Type.>> E de tres variaveis: moveX, moveY do tipo Inteiro (integer) e mover do tipo (boolean). Essas variaveis sao globais.Definicoes:>> Type -> com esta clausula podemos declarar Novos Tipos e/ou Classes.>> Variaveis Globais -> declaradas da Interface da Unit. Podem ser acessadas por qualquer Unit usuaria.Como o entendimento desse codigo e um pouco mais complicado, colocarei aqui toda a Unit.unit uMovObj;interfaceuses Classes, Controls, StdCtrls, Forms, Buttons;type TFMovObj = class(TForm) Label1: TLabel; BitBtn1: TBitBtn; Label2: TLabel;{Procedimentos para o objeto se mover} procedure ControlMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);procedure ControlMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);procedure ControlMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);private{ Private declarations }public{ Public declarations }end;var FMovObj: TFMovObj;{variaveis necessarias} moveX, moveY: Integer; mover: boolean;implementation{$R *.dfm}{-----------------------------------------------------{ Iniciando codificacao de Movimentacao de Objetos.{----------------------------- ------------------------}{Mover Componentes RunTime}type TMoveControle = class(TControl);procedure TFMovObj.ControlMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin moveX := X; moveY := Y; mover := True; TMoveControle(Sender).MouseCapture := True;end; procedure TFMovObj.ControlMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);begin if mover then begin with Sender As TControl Do Begin Left := X-moveX+Left; Top := Y-moveY+Top; End; end;end;procedure TFMovObj.ControlMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin if mover then begin mover := False; TMoveControle(Sender).MouseCapture := False; end;end;{-----------------------------------------------------{ Finalizando codificacao de Movimentacao de Objetos.{-----------------------------------------------------}Para que cada objeto que colocamos na tela (Label, Botao) funcione, e preciso linka-los com os procedimentos codificados.-----------------------Linkando a Label -> Selecione a Label, e em Eventos faca:-> No Evento OnMouseDown, selecione a procedure ControlMouseDown.-> No Evento OnMouseMove, selecione a procedure ControlMouveMove.-> No Evento OnMouseUp, selecione a procedure ControlMouseUp.-----------------------Linkando o Botao -> Selecione o Botao, e em Eventos faca:-> No Evento OnMouseDown, selecione a procedure ControlMouseDown.-> No Evento OnMouseMove, selecione a procedure ControlMouveMove.-> No Evento OnMouseUp, selecione a procedure ControlMouseUp.Dica Importante: Ao selecionar a procedure no Evento do objeto, de um duplo-clique na procedure selecionada ate que seja exibido o codigo da procedure na janela da Unit, para que o Delphi reconheca o codigo a ser linkado.Exemplo, ao selecionar no Evento OnMouseDown -> a procedure ControlMouseDown, dando um duplo-clique, aparece o codigo, na janela da Unit:(selecionando na Janela de Eventos):(visualizando codigo):*********************************************************************Faca o download do arquivo: Movimentando Objetos.rar*********************************************************************"So fazemos melhor aquilo que repetidamente insistimos em melhorar.A busca da excelencia nao deve ser um objetivo e sim um habito." Aristoteles. Simular CheckBox no DBGrid, sempre foi algo muito trabalhoso,mas existe uma jeito simples e rapido de fazer essa simulacao.Adicione no formulario um: TDBGrid,TDataSource e TClientDataSet.-> O TDataSource e o TClientDataSet ambos estao na paleta Data Access.-> O TDBGrid esta na paleta Data Controls.No DBGrid1, para fazer a ligacao dele com o DataSource, em Propriedade faca:-> DataSource = DataSource1Para desativar o modo Edicao no DBGrid, na Propriedade Options faca:-> dgEdition =