Виртуальная библиотека Delphi - [89]

Шрифт
Интервал


>var Form1: TForm1;


>implementation


>{$R *.DFM}


>procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

>begin

> if ssCtrl in Shift then begin

>  SetCapture(Button1.Handle);

>  Capturing := true;

>  MouseDownSpot.X := x;

>  MouseDownSpot.Y := Y;

> end;

>end;


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

>begin

> if Capturing then begin

>  Button1.Left := Button1.Left - (MouseDownSpot.x - x);

>  Button1.Top := Button1.Top - (MouseDownSpot.y - y);

> end;

>end;


>procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

>begin

> if Capturing then begin

>  ReleaseCapture;

>  Capturing := false;

>  Button1.Left := Button1.Left - (MouseDownSpot.x - x);

>  Button1.Top := Button1.Top - (MouseDownSpot.y - y);

> end;

>end;


Вопрос:

При попытке создать обьект класса TPrinter (TPrinter.Create) я получаю exception. Почему?

Ответ:

В создании обьекта класса TPrinter с использованием TPrinter.Create нет необходимости, так как обьект класса TPrinter (называемый Printer) автоматически создается при использовании модуля Printers.

Пример:

>uses Printers;


>procedure TForm1.Button1Click(Sender: TObject);

>begin

> Printer.BeginDoc;

> Printer.Canvas.TextOut(100, 100, 'Hello World!');

> Printer.EndDoc;

>end;


Вопрос:

Как перехватить события в неклиентской области формы, в заголовке окна, например?

Ответ:

Создайте обработчик одного из сообщений WM_NC (non client — не клиентских) (посмотрите WM_NC в Windows API help). Пример показывает как перехватить вижение мыши во всей неклиенстской области окна (рамка и заголовок).

Пример:

>unit Unit1;

>interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

>type TForm1 = class(TForm)

>private

> {Private declarations}

> procedure WMNCMOUSEMOVE(var Message: TMessage); message WM_NCMOUSEMOVE;

>public

> {Public declarations}

>end;


>var Form1: TForm1;


>implementation


>{$R *.DFM}


>procedure TForm1.WMNCMOUSEMOVE(var Message: TMessage);

>var s : string;

>begin

> case Message.wParam of

> HTERROR: s:= 'HTERROR';

> HTTRANSPARENT: s:= 'HTTRANSPARENT';

> HTNOWHERE: s:= 'HTNOWHERE';

> HTCLIENT: s:= 'HTCLIENT';

> HTCAPTION: s:= 'HTCAPTION';

> HTSYSMENU: s:= 'HTSYSMENU';

> HTSIZE: s:= 'HTSIZE';

> HTMENU: s:= 'HTMENU';

> HTHSCROLL: s:= 'HTHSCROLL';

> HTVSCROLL: s:= 'HTVSCROLL';

> HTMINBUTTON: s:= 'HTMINBUTTON';

> HTMAXBUTTON: s:= 'HTMAXBUTTON';

> HTLEFT: s:= 'HTLEFT';

> HTRIGHT: s:= 'HTRIGHT';

> HTTOP: s := 'HTTOP';

> HTTOPLEFT: s:= 'HTTOPLEFT';

> HTTOPRIGHT: s:= 'HTTOPRIGHT';

> HTBOTTOM: s:= 'HTBOTTOM';

> HTBOTTOMLEFT: s:= 'HTBOTTOMLEFT';

> HTBOTTOMRIGHT: s:= 'HTBOTTOMRIGHT';

> HTBORDER: s:= 'HTBORDER';

> HTOBJECT: s:= 'HTOBJECT';

> HTCLOSE: s:= 'HTCLOSE';

> HTHELP: s:= 'HTHELP';

> else s:= '';

> end;

> Form1.Caption := s;

> Message.Result := 0;

>end;


>end.


Вопрос:

При попытке использовать метод TCanvas.StretchDraw чтобы нарисовать иконку увеличенной ее размер не изменяется. Что делать?

Ответ:

Иконки всегда рисуются размером принятым в системе по умолчанию. Чтобы показать увеличенный вид иконки скопируйте ее на bitmap, а зате используйте метод TCanvas.StretchDraw.

Пример:

>procedure TForm1.Button1Click(Sender: TObject);

>var TheBitmap : TBitmap;

>begin

> TheBitmap := TBitmap.Create;

> TheBitmap.Width := Application.Icon.Width;

> TheBitmap.Height := Application.Icon.Height;

> TheBitmap.Canvas.Draw(0, 0, Application.Icon);

> Form1.Canvas.StretchDraw(Rect(0,0,TheBitmap.Width * 3,TheBitmap.Height * 3), TheBitmap);

> TheBitmap.Free;

>end;


Вопрос:

Можно ли сделать так чтобы TStringGrid автоматически изменял ширину колонок, чтобы вместить самую длинную строчку в колонке?

Ответ: См. пример.

Пример:

>procedure AutoSizeGridColumn(Grid : TStringGrid; column : integer);

>var

> i : integer;

> temp : integer;

> max : integer;

>begin

> max := 0;

> for i := 0 to (Grid.RowCount - 1) do begin

>  temp := Grid.Canvas.TextWidth(grid.cells[column, i]);

>  if temp > max then max := temp;

> end;

> Grid.ColWidths[column] := Max + Grid.GridLineWidth + 3;

>end;


>procedure TForm1.Button1Click(Sender: TObject);

>begin

> AutoSizeGridColumn(StringGrid1, 1);

>end;


Вопрос:

TTimer работает не достаточно точно. Как получить более высокую точность?

Ответ:

Таймер Windows не был создан с целью получения сверхточного хронометра. :-( Другими словами, когда Вы устанавливаете таймер на срабатывания каждые 1000 миллисекунд, он может срабатывать через интервал несколько больший чем 1000 миллисекунд. Значения меньше 55 миллисекунд никогда не будут срабатывать вовремя в Windows, поскольку это минимальная точность таймера. Можно проверять системное время и сравнивать его со временем предыдущего события таймера чтобы повысить точность.


Вопрос:

Как поместить JPEG-картинку в exe-файл и потом загрузить ее?

Ответ:

1) Создайте текстовый файл с расширением ".rc". Имя этого файла должно отличаться от имени файла-проекта или любого модуля проекта.

Файл должен содержать строку вроде: MYJPEG JPEG C:\DownLoad\MY.JPG

где:

• "MYJPEG" — имя ресурса

• "JPEG" — пользовательский тип ресурса

• "C:\DownLoad\MY.JPG" — путь к JPEG файлу.

Пусть например rc-файл называется "foo.rc"


Еще от автора Неизвестный Автор
Галчонок

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Призраки ночи

В книге собраны предания и поверья о призраках ночи — колдунах и ведьмах, оборотнях и вампирах, один вид которых вызывал неподдельный страх, леденивший даже мужественное сердце.


Закат  вечности

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


mmmavro.org | День 131, Победа

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Песнь о Нибелунгах

…«Песнь о Нибелунгах» принадлежит к числу наиболее известных эпических произведений человечества. Она находится в кругу таких творений, как поэмы Гомера и «Песнь о Роланде», «Слово о полку Игореве» и «Божественная комедия» Данте — если оставаться в пределе европейских литератур…В. Г. Адмони.


mmmavro.org | День 132, Поэт

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Рекомендуем почитать
Графика DirectX в Delphi

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Вторая жизнь старых компьютеров

Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.


DirectX 8. Начинаем работу с DirectX Graphics

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.