Виртуальная библиотека Delphi

Здесь есть возможность читать онлайн «Виртуальная библиотека Delphi» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Виртуальная библиотека Delphi: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Виртуальная библиотека Delphi»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Виртуальная библиотека Delphi — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Виртуальная библиотека Delphi», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

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

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

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

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

constructorTPanelForm.Create(AOwner: TComponent);

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

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

var

LStyle: Longint;

begin

inheritedCreate(AOwner);

BorderIcons := [];

LStyle := GetWindowLong(Handle, GWL_STYLE);

LStyle := LStyle and notWS_CAPTION;

SetWindowLong(Handle, GWL_STYLE, LStyle);

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

ForceRepaint;

end;

procedureTPanelForm.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 :

procedureTForm1.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

propertyCanvas;

end;

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

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

картинка 58

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

картинка 59

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

Button1.OnClick := nil;

Button1.Free;

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

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

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

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

картинка 60

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

картинка 61

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

procedureTForm1.DooDah;

var

Count: Integer;

begin

Count := 0;

while(Count < ComponentCount) and(Components[Count] <> 'Button1') doInc(Count);

TButton(Components[Count]).SetFocus;

end;

или еще проще:

procedureTForm1.DooDah;

var

Target: TComponent;

begin

Target := FindComponent( 'Button1');

TButton(Target).SetFocus;

end;

Оба этих примера показывают как найти компонент TButton с именем Button1 , и вызвать его метод SetFocus .

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Виртуальная библиотека Delphi»

Представляем Вашему вниманию похожие книги на «Виртуальная библиотека Delphi» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Виртуальная библиотека Delphi»

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

x