DropFilesTarget, Version 1.2 (alt)
Hinweis: dies ist nicht die neueste Version!
Datei: Sample/main.pas
{ main.pas This file is part of the DropFilesTarget.pas demo application. Info at http://flocke.vssd.de/prog/code/pascal/dft/ Copyright (C) 2005 Volker Siebert <flocke@vssd.de> All rights reserved. } unit main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, DropFilesTarget; type TForm1 = class(TForm) RichEdit1: TRichEdit; CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; procedure CheckBox2Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } DropFilesTarget1: TDropFilesTarget; LastWindowHandle: HWND; procedure DropFilesTarget1Drop(Sender: TObject; Info: TDropFilesInfo); procedure CheckHandle; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin // This is done by hand, so you don't need to install to test it ;-) DropFilesTarget1 := TDropFilesTarget.Create(Self); DropFilesTarget1.TargetControl := RichEdit1; DropFilesTarget1.OnDropFiles := DropFilesTarget1Drop; end; procedure TForm1.FormDestroy(Sender: TObject); begin // Is freed automatically, since it's owned by the form //FreeAndNil(DropFilesTarget1); end; procedure TForm1.DropFilesTarget1Drop(Sender: TObject; Info: TDropFilesInfo); var k: Integer; begin RichEdit1.Lines.BeginUpdate; try RichEdit1.Lines.Add(''); RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style + [fsBold]; RichEdit1.Lines.Add('You dropped something on me!'); RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style - [fsBold]; RichEdit1.Lines.Add('Date/Time: ' + FormatDateTime('', Info.Stamp)); RichEdit1.Lines.Add('Point: ' + IntToStr(Info.Point.X) + ' / ' + IntToStr(Info.Point.Y)); RichEdit1.Lines.Add('Count: ' + IntToStr(Info.Files.Count)); RichEdit1.Lines.Add('Files:'); for k := 0 to Info.Files.Count - 1 do RichEdit1.Lines.Add(' ' + Info.Files.Strings[k]); finally RichEdit1.Lines.EndUpdate; SendMessage(RichEdit1.Handle, EM_SCROLLCARET, 0, 0); end; MessageBeep(MB_ICONINFORMATION); end; procedure TForm1.FormShow(Sender: TObject); begin ClientWidth := 400; Top := 32; Height := Screen.Height - 96; Left := Screen.Width - Width - 8; RichEdit1.HandleNeeded; LastWindowHandle := RichEdit1.Handle; end; procedure TForm1.CheckHandle; begin RichEdit1.HandleNeeded; if RichEdit1.Handle <> LastWindowHandle then begin LastWindowHandle := RichEdit1.Handle; RichEdit1.Lines.BeginUpdate; try RichEdit1.Lines.Add(''); RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style + [fsBold]; RichEdit1.SelAttributes.Color := clRed; RichEdit1.Lines.Add(Format('Target window handle changed to $%x!', [LastWindowHandle])); RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style - [fsBold]; RichEdit1.SelAttributes.Color := clWindow; finally RichEdit1.Lines.EndUpdate; SendMessage(RichEdit1.Handle, EM_SCROLLCARET, 0, 0); end; MessageBeep(MB_ICONINFORMATION); end; end; procedure TForm1.CheckBox1Click(Sender: TObject); begin RichEdit1.HideScrollBars := CheckBox1.Checked; CheckHandle; end; procedure TForm1.CheckBox2Click(Sender: TObject); const ScrollBars: array [Boolean, Boolean] of TScrollStyle = ( ( ssNone, ssHorizontal ), ( ssVertical, ssBoth ) ); begin RichEdit1.ScrollBars := ScrollBars[CheckBox2.Checked, CheckBox3.Checked]; CheckHandle; end; end. |