unit ufrmEscolheProvidencia; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Vcl.StdCtrls, Vcl.DBCtrls; type TfrmEscolheProv = class(TForm) DBLookupComboBox1: TDBLookupComboBox; Label1: TLabel; Button1: TButton; Button2: TButton; DataSource1: TDataSource; procedure FormCreate(Sender: TObject); procedure FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); procedure Button1Click(Sender: TObject); private procedure WMMoving(var Msg: TWMMoving); message WM_MOVING; { Private declarations } public { Public declarations } end; var frmEscolheProv: TfrmEscolheProv; implementation {$R *.dfm} uses udtmSystem, ucadCampanha; procedure TfrmEscolheProv.Button1Click(Sender: TObject); begin if DBLookupComboBox1.KeyValue < 0 then begin showmessage(''); abort; end else begin DataSource1.DataSet.Locate('ID_PROVIDENCIA', DBLookupComboBox1.KeyValue, []); cadCampanha.mass_prov := DataSource1.DataSet.FieldByName('TX_NOME') .AsString; end; end; procedure TfrmEscolheProv.FormCreate(Sender: TObject); begin if not DataSource1.DataSet.Active then begin DataSource1.DataSet.Open; end; end; procedure TfrmEscolheProv.FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin if (DBLookupComboBox1.Focused = true) then begin DBLookupComboBox1.Perform(WM_KEYDOWN, VK_DOWN, 0); end; end; procedure TfrmEscolheProv.FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin if (DBLookupComboBox1.Focused = true) then begin DBLookupComboBox1.Perform(WM_KEYDOWN, VK_UP, 0); end; end; procedure TfrmEscolheProv.WMMoving(var Msg: TWMMoving); var workArea: TRect; begin workArea := Screen.WorkareaRect; with Msg.DragRect^ do begin if left < workArea.left then OffsetRect(Msg.DragRect^, workArea.left - left, 0); if top < workArea.top then OffsetRect(Msg.DragRect^, 0, workArea.top - top); if Right > workArea.Right then OffsetRect(Msg.DragRect^, workArea.Right - Right, 0); if Bottom > workArea.Bottom then OffsetRect(Msg.DragRect^, 0, workArea.Bottom - Bottom); end; end; end.