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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

{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 //вызываем защищенный метод родительского класса

TMyNotebook(TWinControl(Pages.Objects[PageIndex])).DestroyHandle;

NoteBook1.PageIndex := NewTab;

AllowChange := true

end;

Вопрос:

Функция keybd_event() принимает значения до 244 — как мне отправить нажатие клавиши с кодом #255 в элемент управления Windows?

Ответ:

Это может понадобится для иностранных языков или для специальных символов. (например, в русских шрифтах символ с кодом #255 — я прописное). Приведенный в примере метод не стоит использовать в случае, если символ может быть передан обычным способом (функцией keybd_event()).

procedure TForm1.Button1Click(Sender: TObject);

var KeyData : packed record

RepeatCount : word;

ScanCode : byte;

Bits : byte;

end;

begin

{Let the button repaint}

Application.ProcessMessages;

{Set the focus to the window}

Edit1.SetFocus;

{Send a right so the char is added to the end of the line}

// SimulateKeyStroke(VK_RIGHT, 0);

keybd_event(VK_RIGHT, 0,0,0);

{Let the app get the message}

Application.ProcessMessages;

FillChar(KeyData, sizeof(KeyData), #0);

KeyData.ScanCode := 255;

KeyData.RepeatCount := 1;

SendMessage(Edit1.Handle, WM_KEYDOWN, 255,LongInt(KeyData));

KeyData.Bits := KeyData.Bits or (1 shl 30);

KeyData.Bits := KeyData.Bits or (1 shl 31);

SendMessage(Edit1.Handle, WM_KEYUP, 255, LongInt(KeyData));

KeyData.Bits := KeyData.Bits and not (1 shl 30);

KeyData.Bits := KeyData.Bits and not (1 shl 31);

SendMessage(Edit1.Handle, WM_CHAR, 255, LongInt(KeyData));

Application.ProcessMessages;

end;

Вопрос:

Некоторые компоненты не меняют курсор мыши до тех пор пока пользователь не сдвинет мышь. Как эмулировать движение мыши?

Ответ:

В примере мышка слегка "подталкивается" без участия пользователя.

procedure TForm1.Button1Click(Sender: TObject);

var pt : TPoint;

begin

Application.ProcessMessages;

Screen.Cursor := CrHourglass;

GetCursorPos(pt);

SetCursorPos(pt.x + 1, pt.y + 1);

Application.ProcessMessages;

SetCursorPos(pt.x - 1, pt.y - 1);

end;

Вопрос:

Как зарегистрировать расширение файла за своим приложением и контекстное меню, связанное с этим типом?

Ответ:

Пример регистрирует расширение файла(.myext) — файлы этого типа будут открываться приложением MyApp.Exe. Также регнстрируется одно действие (action) по умолчанию для файлов этого типа и два дополнительных пункта контекстного меню, связанного с этим типом файлов. Возможно, потребуется перезайти в систему чтобы изменения вступили в силу.

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

Интервал:

Закладка:

Сделать

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

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


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

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

x