Виртуальная библиотека Delphi - [92]
> {Private declarations}
> procedure UMMyGlobalMessage(var AMessage: TMessage); message UM_MyGlobalMessage;
>public
> {Public declarations}
>end;
>var Form1: TForm1;
>implementation
>{$R *.DFM}
>uses Unit2;
>procedure TForm1.FormShow(Sender: TObject);
>begin
> Form2.Show;
>end;
>procedure TForm1.UMMyGlobalMessage(var AMessage: TMessage);
>begin
> Label1.Left := AMessage.WParam;
> Label1.Top := AMessage.LParam;
> Form1.Caption := 'Got It!';
>end;
>procedure TForm1.Button1Click(Sender: TObject);
>var f: integer;
>begin
> for f := 0 to Screen.FormCount - 1 do Screen.Forms[f].Perform(UM_MyGlobalMessage, 42, 42);
>end;
>{Code for Unit2}
>const UM_MyGlobalMessage = WM_USER + 1;
>type TForm2 = class(TForm)
> Label1: TLabel;
>private
> {Private declarations}
> procedure UMMyGlobalMessage(var AMessage: TMessage); message UM_MyGlobalMessage;
>public
> {Public declarations}
>end;
>var Form2: TForm2;
>implementation
>{$R *.DFM}
>procedure TForm2.UMMyGlobalMessage(var AMessage: TMessage);
>begin
> Label1.Left := AMessage.WParam;
> Label1.Top := AMessage.LParam;
> Form2.Caption := 'Got It!';
>end;
Вопрос:
Как обновить список дисков компонента TDriveComboBox, учитывая, что могут быть подключены/отключены сетевые диски и произведена "горячая замена" plug&play дисков?
Ответ:
Следующий пример вызывает защищенный (protected) метод класса TDriveComboBox BuildList() для регенерации списка дисков. (использовая так наз. "class cracer")
Пример:
>type TNewDriveComboBox = class(TDriveComboBox) //это наш "class cracer"
>end;
>procedure TForm1.Button1Click(Sender: TObject);
>var Drive : char;
>begin
> Drive := DriveComboBox1.Drive;
> TNewDriveComboBox(DriveComboBox1).BuildList; //вызываем защищенный метод родительского класса
> DriveComboBox1.Drive := Drive;
>end;
Вопрос:
Как программно заставить выпасть меню?
Ответ:
В примере показано как показать меню и выбрать в нем какой-то пункт, эмулируя нажатие "быстрой клавиши" пункта меню. Если у Вашего пункта меню нет "быстрой клавиши" Вы можете посылать комбинации VK_MENU, VK_LEFT, VK_DOWN, и VK_RETURN, чтобы программно "путешествовать" по меню.
Пример:
>procedure TForm1.Button1Click(Sender: TObject);
>begin
> //Allow button to finish painting in response to the click
> Application.ProcessMessages;
> {Alt Key Down}
> keybd_Event(VK_MENU, 0, 0, 0);
> {F Key Down - Drops the menu down}
> keybd_Event(ord('F'), 0, 0, 0);
> {F Key Up}
> keybd_Event(ord('F'), 0, KEYEVENTF_KEYUP, 0);
> {Alt Key Up}
> keybd_Event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
> {F Key Down}
> keybd_Event(ord('S'), 0, 0, 0);
> {F Key Up}
> keybd_Event(ord('S'), 0, KEYEVENTF_KEYUP, 0);
>end;
Вопрос:
Как сделать клавишу-акселератор (keyboard shortcut) компоненту, у которого нет заголовка?
Ответ:
Возможный вариант — присвоить ссылку на этот компонент свойству FocusControl TLabel'а. В примере используется невидимый Label для создания "быстрой" клавиши (Alt+M) компонента Memo. Чтобы использовать пример, разместите на форме компонет TMemo, Label и несколько других компонентов, которые могут принимать фокус ввода. Запустите программу, перевидите фокус ввода куда-нибудь вне Memo и нажмите Alt+M — фокус ввода вернется в Memo.
Пример:
>procedure TForm1.FormCreate(Sender: TObject);
>begin
> Label1.Visible := false;
> Label1.Caption := '&M';
> Label1.FocusControl := Memo1;
>end;
Вопрос:
Можно ли как-то уменьшить мерцание при перерисовке компонента?
Ответ:
Если добавить флаг csOpaque (непрозрачный) к свойству ControlStyle компонента — то фон компонента перерисовываться не будет.
Пример:
>constructor TMyControl.Create;
>begin
> inherited;
> ControlStyle := ControlStyle + [csOpaque];
>end;
Вопрос:
Как запретить изменение размера моего компонента в design-time?
Ответ:
Поместите в конструктор компонента код, устанавливающий размеры по умолчанию. Переопределите метод SetBounds и проверяйте в нем "componentstate". Если компонет находится режиме "design-time" (csDesigning in ComponentState) просто передавайте значения ширины и высоты (width и heights) компонента по умолчанию (в нашем примере 50) методу класса-предка.
Пример:
>procedure TVu.SetBounds(ALeft : integer; ATop : integer; AWidth : integer; AHeight : integer);
>begin
> if csdesigning in componentstate then begin
> AWidth := 50;
> AHeight := 50;
> inherited; //вызываем унаследованный от предка метод
> end;
>end;
Вопрос:
Можно ли уменьшить потребляемые компонентами TNotebook и TTabbedNotebook ресурсы?
Ответ:
Да. Можно уничтожать обьекты, расположенные не на текущей странице TNotebook или TTabbedNotebook. В примере вызывается защищенный (Protected) метод путем создания так называемый "class cracer'ов".
>type TMyTabbedNotebook = class(TTabbedNotebook); //это наш "class cracer"
>type TMyNotebook = class(TNotebook);
>procedure TForm1.TabbedNotebook1Change(Sender: TObject; NewTab: Integer; var AllowChange: Boolean);
>begin
> with TabbedNotebook1 do //вызываем защищенный метод родительского класса
> TMyTabbedNotebook(TWinControl(Pages.Objects[PageIndex])).DestroyHandle;
>end;
>procedure TForm1.TabSet1Change(Sender: TObject; NewTab: Integer; var AllowChange: Boolean);
>begin
> with Notebook1 do //вызываем защищенный метод родительского класса
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге собраны предания и поверья о призраках ночи — колдунах и ведьмах, оборотнях и вампирах, один вид которых вызывал неподдельный страх, леденивший даже мужественное сердце.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
…«Песнь о Нибелунгах» принадлежит к числу наиболее известных эпических произведений человечества. Она находится в кругу таких творений, как поэмы Гомера и «Песнь о Роланде», «Слово о полку Игореве» и «Божественная комедия» Данте — если оставаться в пределе европейских литератур…В. Г. Адмони.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.