Виртуальная библиотека Delphi - [53]
24. Как в меню поместить bitmap?
Можно поступить таким образом:
>var
> Bmp1: TBitmap;
>begin
> Bmp1 := TBitmap.Create;
> Bmp1.LoadFromFile('C:\WHERE\B1.BMP');
> SetMenuItemBitmaps(MenuItemTest.Handle, 0, MF_BYPOSITION, Bmp1.Handle, Bmp1.Handle);
>end;
Параметры:
• MenuItemTest — имя пункта меню (горизонтальная строка)
• 0,1 ... — позиция пункта меню, в который надо вставить BMP
• первый Handle — для показа невыбранного пункта меню (Unchecked)
• второй Handle — для выбранного (Checked). Они могут быть разные
Код можно вставить в обработчик OnCreate для формы. При уничтожении меню TBitmap не уничтожается, это надо делать отдельно.
25. Каким образом можно поместить двумерный массив в TImage?
Представим, что данные находятся в массиве:
>TestArray: array [0..127, 0..127] of Byte;
Картинка будет иметь размер 128×128 точек:
>Image1.Picture.Bitmap.Width := 128;
>Image1.Picture.Bitmap.Height := 128;
Вызываем функцию Windows API для формирования bitmap:
>SetBitmapBits(Image1.Picture.Bitmap.Handle, SizeOf(TestArray), @TestArray);
>Image1.Refresh; { для того, чтобы изменения отобразились }
Однако, если вы используете свою палитру, то ее нужно создавать специально.
26. Как из программы 'открыть' TComboBox?
У TComboBox есть run-time свойство, не упомянутое в on-line help — DroppedDown.
Для открытия ComboBox напишите:
>ComboBox1.DroppedDown := True;
Естественно, False закроет его.
27. Как заменить надпись 'Read only' в компонентах TSaveDialog и TOpenDialog?
Попробуйте посмотреть в Windows API Help разделы, связанные с lpTemplateName. Вообще говоря, вы можете заменить стандартный Open Dialog Box своим собственным шаблоном.
28. Проблема в использовании компонента TCustomGrid.
Делаю так:
1. Создаю новый компонент при помощи Эксперта Компонент
2. Имя класса TSampleCalendar
3. Имя родителя TCustomGrid
4. Использую страницу 'Samples'
5. Сохраняю модуль с именем CALSAMP.PAS
6. Подключаю к Палитре компонент
7. Создаю форму, помещаю новый компонент на форму и получаю Runtime Error 210 В чем дело?
Проблема в том, что TCustomGrid имеет метод DrawCell, который является абстрактным. То, что его безусловно надо переписывать у любого наследника TCustomGrid, к сожалению, не отражено в документации. Создайте этот метод (пусть даже пустой) и ваша проблема исчезнет.
29. Как установить формат для поля таблицы?
В Fields Editor выберите поле для форматирования. Используя свойства DisplayFormat и EditFormat сделайте то, что нужно. DisplayFormat работает для поля, на которое не установлен фокус. EditFormat работает для поля, на которое фокус установлен. Форматирование аналогично первому параметру в функции FormatFloat, но без скобок.
30. Можно ли использовать клавишу ENTER при вводе данных для перехода от поля к полю?
Используйте данный код для события OnKeyPress компонента TEdit.
>procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
>begin
> if Key = #13 then
> begin
> SelectNext(Sender as TWinControl, True, True);
> Key := #0;
> end;
>end;
Теперь Enter ведет себя как Tab. Затем, выберите все объекты, которые должны вести себя как Edit1 (за исключением кнопок) и в Object Inspector установите обработчик OnKeyPress в Edit1KeyPress. Каждый выбранный вами объект воспринимает Enter как Tab. Если вы хотите обрабатывать событие на уровне формы (а не в каждом отдельном компоненте), уберите обработчики события у всех компонент и создайте FormKeyPress — обработчик OnKeyPress для формы:
>procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
>begin
> if Key = #13 then
> begin
> SelectNext(Sender as TWinControl, True, True);
> Key := #0;
> end;
>end;
Все объекты на форме будут воспринимать Enter как Tab.
Общие вопросы по Delphi и данному FAQ (часть 3)
Object Pascal и Windows API
1. Как работает информация времени выполнения (RTTI)?
Имеются два новых оператора: as и is. as — оператор защищенного преобразования типов (typecasting). Вы можете использовать его, чтобы заставить компилятор преобразовать объект из одного типа в другой, но, если в во время выполнения эти типы окажутся несовместимыми, то вы получите ошибку. Hапример, если вы имеете класс TSport, с потомоками TBasketball и TFootball, вам может потребоваться переменная типа TSport; далее может так случиться, что в программе эта переменная будет фактически содержать экземпляр типа TFootball. Тогда вы можете обратиться к этой переменной
>(MySport as TFootball)
чтобы получить доступ к специфическим свойствам из типа TFootball. Однако, если вы ошиблись и на самом деле это экземпляр типа TBasketball, то при обращении к несуществующим свойствам будет возникать ошибка. Оператор is определяет, принадлежит ли экземпляр объекта к данному классу, либо к классу одного из его предков, и используется для проверки, сработает ли преобразование типов с данным объектом. Если вы имеете переменную MySport типа TSport, и в настоящее время она содержит экземпляр TBasketball, тогда следующие выражения истинны:
>(MySport is TSport)
>(MySport is TBasketball)
>not (MySport is TFootball)
Следует иметь ввиду, что компилятор разрешает использовать данные конструкции только для выполнения преобразования типов, связанных родственными отношениями. Так, конструкция (Button1
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге собраны предания и поверья о призраках ночи — колдунах и ведьмах, оборотнях и вампирах, один вид которых вызывал неподдельный страх, леденивший даже мужественное сердце.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
…«Песнь о Нибелунгах» принадлежит к числу наиболее известных эпических произведений человечества. Она находится в кругу таких творений, как поэмы Гомера и «Песнь о Роланде», «Слово о полку Игореве» и «Божественная комедия» Данте — если оставаться в пределе европейских литератур…В. Г. Адмони.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.