Читаем Виртуальная библиотека Delphi полностью

То же самое справедливо и для компонента TNotebook.

6. Как включить символ & в надпись (Caption)?

Попробуйте: &&

7. Как сделать окно (TForm) без заголовка (Caption)?

Попробуйте использовать следующий код:  

constructor TPanelForm.Create(AOwner: TComponent); 

{ Вызов SetWindowLong API для изменения стиля окна главной формы. } 

{ Берется существующий стиль и убирается флаг WS_CAPTION          } 

var  

  LStyle: Longint; 

begin 

  inherited Create(AOwner); 

  BorderIcons := []; 

  LStyle := GetWindowLong(Handle, GWL_STYLE); 

  LStyle := LStyle and not WS_CAPTION; 

  SetWindowLong(Handle, GWL_STYLE, LStyle); 

{ Перерисуем окно } 

  ForceRepaint; 

end

procedure TPanelForm.ForceRepaint; 

var 

  RectWnd: TRect; 

  WWidth, WHeight: Integer; 

begin 

{ получаем размер окна } 

  GetWindowRect(Handle, RectWnd); 

  WWidth := RectWnd.Right-RectWnd.Left; 

  WHeight := RectWnd.Bottom-RectWnd.Top; 

{ Форсируем полную перерисовку. Это должен делать InvalidateRect() } 

{ но почему-то не делает  : (  } 

{ "сожмем" окно } 

  SetWindowPos(Handle, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE); 

{ восстановим окно } 

  SetWindowPos(Handle, HWND_TOP, 0, 0, WWidth, WHeight, SWP_NOMOVE); 

end;   

Можно поступить другим способом — выставить у формы свойство BorderStyle = bsNone, и написать следующий обработчик OnPaint:

procedure TForm1.FormPaint(Sender: TObject); 

begin 

  Canvas.Brush.Style := bsClear; 

  Canvas.Rectangle(0, 0, Width, Height); 

end;    

8. Почему некоторые компоненты типа TPanel и TEdit не имеют свойства Canvas?

Все наследники TCustomControl имеют Canvas, однако, в большинстве случаев это свойство объявлено protected для предотвращения рисования 'чужаками' на компоненте. Наследники компонента всегда могут получить доступ к унаследованным protected свойствам (типа Canvas), но пользователь компонента — никогда.  

type 

  TCanvasPanel = class(TPanel) 

  public 

    property Canvas; 

  end

Если вы хотите рисовать на компоненте, у которого нет public свойства Canvas, то используйте, например, компонент TPaintBox: положите его на панель TPanel, сделайте Align = Client и рисуйте на TPaintBox.Canvas.

9. Почему при уничтожении компонента в методе OnClick происходит ошибка?

Допустим, вы поместили на форму кнопку, и создали метод OnClick в котором вызываете Button1.Free. Вы видите, что это метод формы — казалось бы, какие препятствия для правильного уничтожения кнопки?

На самом деле Button1.OnClick является свойством и после запуска вашего приложения содержит адрес метода Form1.Button1Click. Именно кнопка вызывает этот метод как свой собственный. А это означает, что кнопка не может удалить себя в своем-же методе. Даже если вы попытаетесь удалить ссылку в OnClick:

Button1.OnClick := nil;

Button1.Free;

то это не поможет — стек настроен на возврат в обработчик TButton, который и вызвал OnClick. Поскольку к моменту возврата объект разрушен — возникает GPF или Access Violation.

10. Есть ли у TDBGrid события OnMouseDown, OnMouseUp и OnMouseMove?

Они есть, но не объявлены published. Вы можете создать наследника TDBGrid и сделать их published.

11. Поиск компонента в форме по имени.

Я хочу делать текущими в форме произвольные компоненты. Как выставить фокус у конкретного компонента ясно - ListBox1.SetFocus. А если я хочу обращаться к некоему компоненту по имени (свойство Name)?

Свойство TForm.Components — массив компонентов формы, который и нужен вам. Вы можете перемещаться по этому массиву пока не найдете компонент с нужным Name. Например:  

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных