Виртуальная библиотека Delphi - [83]
>begin
> if Key = VK_TAB then Form1.Caption := 'Tab Key Down!';
>end;
Вопрос:
В чем отличие между Create(Self) и Create(Application)?
Ответ:
Self может быть использовано только в методе класса, и ссылается на текущий экземпляр класса. Таким образом "Self" в методе класса TForm1 ссылается на текущий экземпляр TForm1. При создании компонента Вы передаете его владельца (owner) в конструктор. При уничтожении формы или компонента автоматически уничтожаются и все компоненты владельцем которого она является. Таким образом если при создании формы передать в качестве владельца Application эта форма будет автоматически уничтожена при уничтожении Application. Если же при создании формы передать в качестве владельца другую форму, вновь созданная форма будет автоматически уничтоженн при уничтожении формы-владельца.
Вопрос:
Как во время выполнения определить поддерживает ли обьект заданное свойство?
Ответ:
>function HasProperty(Obj : TObject; Prop : string) : PPropInfo;
>begin
> Result := GetPropInfo(Obj.ClassInfo, Prop);
>end;
>procedure TForm1.Button1Click(Sender: TObject);
>var p : pointer;
>begin
> p := HasProperty(Button1, 'Color');
> if p <> nil then SetOrdProp(Button1, p, clRed)
> else ShowMessage('Button has no color property');
> p := HasProperty(Label1, 'Color');
> if p <> nil then SetOrdProp(Label1, p, clRed)
> else ShowMessage('Label has no color property');
> p := HasProperty(Label1.Font, 'Color');
> if p <> nil then SetOrdProp(Label1.Font.Color, p, clBlue)
> else ShowMessage('Label.Font has no color property');
>end;
Вопрос:
Как при проигрывании музыки с Audio CD показывать сколько прошло минут и секунд?
Ответ:
В примере время выводится по таймеру.
Пример:
>uses MMSystem;
>procedure TForm1.Timer1Timer(Sender: TObject);
>var
> Trk : Word;
> Min : Word;
> Sec : Word;
>begin
> with MediaPlayer1 do begin
> Trk := MCI_TMSF_TRACK(Position);
> Min := MCI_TMSF_MINUTE(Position);
> Sec := MCI_TMSF_SECOND(Position);
> Label1.Caption := Format('%.2d',[Trk]);
> Label2.Caption := Format('%.2d:%.2d',[Min,Sec]);
> end;
>end;
Вопрос:
Можно ли рисовать на рамке формы?
Ответ:
Обрабатывайте событие WM_NCPAINT. В примере рамка обводится красной линией толщиной в 1 пиксел.
Пример:
>type TForm1 = class(TForm)
>private
> {Private declarations}
> procedure WMNCPaint(var Msg : TWMNCPaint); message WM_NCPAINT;
>public
> {Public declarations}
>end;
>var Form1: TForm1;
>implementation
>{$R *.DFM}
>procedure TForm1.WMNCPaint(var Msg: TWMNCPaint);
>var
> dc : hDc;
> Pen : hPen;
> OldPen : hPen;
> OldBrush : hBrush;
>begin
> inherited;
> dc := GetWindowDC(Handle);
> msg.Result := 1;
> Pen := CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
> OldPen := SelectObject(dc, Pen);
> OldBrush := SelectObject(dc, GetStockObject(NULL_BRUSH));
> Rectangle(dc, 0,0, Form1.Width, Form1.Height);
> SelectObject(dc, OldBrush);
> SelectObject(dc, OldPen);
> DeleteObject(Pen);
> ReleaseDC(Handle, Canvas.Handle);
>end;
Вопрос:
Как выполнить какой-то процесс тогда, когда пользователь не работает с моим приложением?
Ответ:
Создайте процедуру, которая будет вызываться при событии Application.OnIdle.
Обьявим процедуру:
>{Private declarations}
>procedure IdleEventHandler(Sender: TObject; var Done: Boolean);
В разделе implementation опишем процедуру:
>procedure TForm1.IdleEventHandler(Sender: TObject; var Done: Boolean);
>begin
> {Do a small bit of work here}
> Done := false;
>end;
В методе Form'ы OnCreate — укажем что наша процедура вызывается на событии Application.OnIdle.
Application.OnIdle := IdleEventHandler;
Событие OnIdle возникает один раз — когда приложение переходит в режим "безделья" (idle). Если в обработчике переменной Done присвоить False событие будет вызываться вновь и вновь, до тех пор пока приложение "бездельничает" и переменной Done не присвоенно значение True.
Вопрос:
При перемещении фокуса ввода клавишей Tab чтобы переместить его в RadioGroup нужно нажать клавишу Tab дважды если какой нибудь пункт RadioGroup уже выбран, но только один раз если не выбран. Можно ли сделать поведение RadioGroup логичным?
Ответ:
Установка свойства RadioGroup'ы TabStop в false должна решить эту проблему — поскольку клавиша tab будет продолжать работать — перемещаясь сразу на выделенный пункт RadioGroup.
Вопрос:
Как разместить маленькие картинки в компоненте TPopUpMenu?
Ответ:
В приведенном примере показано как это сделать с использованием функции Windows API SetMenuItemBitmaps(). Эта функция получает handle popup menu, позицию строчки меню куда будет помещена картинка, и два дескриптора (handles) на две картинки (одна из них — картинка которая будет показана когда строка меню доступна, вторая — когда строка меню недоступна).
>type TForm1 = class(TForm)
> PopupMenu1: TPopupMenu;
> Pop11: TMenuItem;
> Pop21: TMenuItem;
> Pop31: TMenuItem;
> procedure FormCreate(Sender: TObject);
> procedure FormDestroy(Sender: TObject);
> procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
>private
> {Private declarations}
> bmUnChecked : TBitmap;
> bmChecked : TBitmap;
>public
> {Public declarations}
>end;
>var Form1: TForm1;
>implementation
>{$R *.DFM}
>procedure TForm1.FormCreate(Sender: TObject);
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге собраны предания и поверья о призраках ночи — колдунах и ведьмах, оборотнях и вампирах, один вид которых вызывал неподдельный страх, леденивший даже мужественное сердце.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
…«Песнь о Нибелунгах» принадлежит к числу наиболее известных эпических произведений человечества. Она находится в кругу таких творений, как поэмы Гомера и «Песнь о Роланде», «Слово о полку Игореве» и «Божественная комедия» Данте — если оставаться в пределе европейских литератур…В. Г. Адмони.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.