Читать «Виртуальная библиотека Delphi» онлайн - страница 153

Unknown

Пример:

procedure TForm1.FormDeactivate(Sender: TObject);

begin

 ReleaseCapture;

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

begin

 If GetCapture = 0 then SetCapture(Form1.Handle);

 if PtInRect(Rect(Form1.Left,Form1.Top,Form1.Left + Form1.Width, Form1.Top + Form1.Height), ClientToScreen(Point(x, y))) then Form1.Caption := 'Мышка над формой!'

 else Form1.Caption := 'Мышка вне формы...';

end;

Вопрос:

Как программно определить, что приложение работает под Windows NT?

Ответ:

см. пример

Пример:

function IsNT : bool;

var osv : TOSVERSIONINFO;

begin

 result := true;

 GetVersionEx(osv);

 if osv.dwPlatformId = VER_PLATFORM_WIN32_NT then exit;

 result := false;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

 if IsNt then ShowMessage('Running on NT')

 else ShowMessage('Not Running on NT');

end;

Вопрос:

Как создать bitmap из пиктогрммы (icon)?

Ответ:

Используя Bitmap.Canvas.Draw нарисуйте пиктограмму на Bitmap'е.

Пример:

procedure TForm1.Button1Click(Sender: TObject);

var

 TheIcon : TIcon;

 TheBitmap : TBitmap;

begin

 TheIcon := TIcon.Create;

 TheIcon.LoadFromFile('C:\Program Files\Borland\IcoCur32\EARTH.ICO');

 TheBitmap := TBitmap.Create;

 TheBitmap.Height := TheIcon.Height;

 TheBitmap.Width := TheIcon.Width;

 TheBitmap.Canvas.Draw(0, 0, TheIcon);

 Form1.Canvas.Draw(10, 10, TheBitmap);

 TheBitmap.Free; TheIcon.Free;

end;

Вопрос:

Как создать отдельную подсказку (hint) для каждой ячейки StringGrid?

Ответ:

В приведенном примере отслеживается движение курсора мыши — при перемещении между ячейками StringGrid'а — появляется окно подсказки (hint), показывающее номер текущей строки и колонки.

Пример:

type TForm1 = class(TForm)

 StringGrid1: TStringGrid;

 procedure StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

 procedure FormCreate(Sender: TObject);

private

 {Private declarations}

 Col : integer;

 Row : integer;

public

 {Public declarations}

end;

var Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

 StringGrid1.Hint := '0 0';

 StringGrid1.ShowHint := True;

end;

procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

var

 r : integer;

 c : integer;

begin

 StringGrid1.MouseToCell(X, Y, C, R);

 with StringGrid1 do begin

  if ((Row <> r) or (Col <> c)) then begin

   Row := r;

   Col := c;

   Application.CancelHint;