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

Тут можно читать онлайн Виртуальная библиотека Delphi - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Виртуальная библиотека Delphi
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

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

Виртуальная библиотека Delphi - описание и краткое содержание, автор Неизвестный Автор, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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

Виртуальная библиотека Delphi - читать книгу онлайн бесплатно, автор Неизвестный Автор
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Для того, чтобы добавить компонент на страницу TabbedNotebook , свойству Parent нового компонента нужно присвоить указатель на требуемую страницу. Способ для доступа к любой странице TTabbedNotebook во время выполнения — массив свойств Objects у свойства Pages компонента TTabbedNotebook . Другими словами, страницы сохранены в виде объектов в свойстве Pages (тип TStringList ). Пример демонстрирует создание кнопки TButton на второй странице TabbedNotebook1 :

var

NewButton: TButton;

begin

NewButton := TButton.Create(Self);

NewButton.Parent := TWinControl(TabbedNotebook1.Pages.Objects[0]);

То же самое справедливо и для компонента 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 .

12. Как получить горизонтальный ScrollBar на ListBox?

Пошлите сообщение LB_SETHORIZONTALEXTENT в ListBox . Например, сообщение может быть отослано в момент создания формы:

procedureTForm1.FormCreate(Sender: TObject);

begin

SendMessage(Listbox1.Handle, LB_SETHORIZONTALEXTENT, 1000, Longint(0));

end;

13. Как определить текущую колонку и строку каретки в компоненте TMemo?

Вы можете использовать сообщения Windows API EM_LINEFROMCHAR и EM_LINEINDEX для определения положения.

var

LineNum: Longint;

CharsBeforeLine: Longint;

begin

LineNum := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, Memo1.SelStart, 0);

CharsBeforeLine := SendMessage(Memo1.Handle, EM_LINEINDEX, LineNum, 0);

Label1.Caption := 'Line '+ IntToStr(LineNum + 1)

Lebel2.Caption := 'Position '+ IntToStr(Memo1.SelStart - CharsBeforeLine + 1);

end;

14. Постранична прокрутка TMemo, реализация Undo и определение строки курсора.

картинка 62

Как прокрутить содержимое компонента TMemo ?

картинка 63

Приведенная ниже процедура предполагает, что фокус находится на Edit1 и осуществляет прокрутку в соответствии с нажатыми клавишами.

procedureTForm1.Edit1KeyDown(Sender: TObject; varKey: Word; Shift: TShiftState);

begin

ifKey = VK_F8 then

SendMessage(Memo1.Handle, { HWND для Memo }

WM_VSCROLL, { сообщение Windows }

SB_PAGEDOWN, { на страницу вниз }

0) { не используется }

else ifKey = VK_F7 thenSendMessage(Memo1.Handle, WM_VSCROLL, SB_PAGEUP, 0);

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

Интервал:

Закладка:

Сделать


Неизвестный Автор читать все книги автора по порядку

Неизвестный Автор - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Виртуальная библиотека Delphi, автор: Неизвестный Автор. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x