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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

Пример:

type TForm1 = class(TForm)

private

{Private declarations}

procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;

public

{Public declarations}

end;

var Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WMSysCommand;

begin

if (Msg.CmdType = SC_MINIMIZE) or (Msg.CmdType = SC_MAXIMIZE) then MessageBeep(0)

else inherited;

end;

Вопрос:

Можно ли сделать так — одна форма показывает другую и остается позади нее, но фокус ввода не переходит к новой форме, а остается у старой?

Ответ:

В примере показывается не автосоздаваемая (non auto-created) форма, но фокус ввода ей не передается.

Пример:

uses Unit2;

procedure TForm1.Button1Click(Sender: TObject);

begin

Form2 := TForm2.Create(Application);

Form2.Visible := FALSE;

ShowWindow(Form2.Handle, SW_SHOWNA);

end;

Вопрос:

На некоторых laptop компьютерах может не быть флоппи дисковода. Можно ли удалять из списка TDriveComboBox диски которые отключены?

Ответ:

В примере TDriveComboBox не показывает дисководы, которые не готовы. (not ready). Учтите что на многих компьютерах будет ощутимая задержка при поверке plug&play флоппи дисковода.

Пример:

procedure TForm1.FormCreate(Sender: TObject);

var

i : integer;

OldErrorMode : Word;

OldDirectory : string;

begin

OldErrorMode := SetErrorMode(SEM_NOOPENFILEERRORBOX);

GetDir(0, OldDirectory);

i := 0;

while i <= DriveComboBox1.Items.Count - 1 do begin

{$I-}

ChDir(DriveComboBox1.Items[i][1] + ':\');

{$I+}

if IoResult <> 0 then DriveComboBox1.Items.Delete(i)

else inc(i);

end;

ChDir(OldDirectory);

SetErrorMode(OldErrorMode);

end;

Вопрос:

Как сообщить всем формам моего приложения (в том числе и не видимым в данный момент) об изменении каких-то глобальных значений?

Ответ:

Один из способов — создать пользовательское сообщение и использовать метод preform чтобы разослать его всем формам из массива Screen.Forms.

Пример:

{Code for Unit1}

const UM_MyGlobalMessage = WM_USER + 1;

type TForm1 = class(TForm)

Label1: TLabel;

Button1: TButton;

procedure FormShow(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{Private declarations}

procedure UMMyGlobalMessage(var AMessage: TMessage); message UM_MyGlobalMessage;

public

{Public declarations}

end;

var Form1: TForm1;

implementation

{$R *.DFM}

uses Unit2;

procedure TForm1.FormShow(Sender: TObject);

begin

Form2.Show;

end;

procedure TForm1.UMMyGlobalMessage(var AMessage: TMessage);

begin

Label1.Left := AMessage.WParam;

Label1.Top := AMessage.LParam;

Form1.Caption := 'Got It!';

end;

procedure TForm1.Button1Click(Sender: TObject);

var f: integer;

begin

for f := 0 to Screen.FormCount - 1 do Screen.Forms[f].Perform(UM_MyGlobalMessage, 42, 42);

end;

{Code for Unit2}

const UM_MyGlobalMessage = WM_USER + 1;

type TForm2 = class(TForm)

Label1: TLabel;

private

{Private declarations}

procedure UMMyGlobalMessage(var AMessage: TMessage); message UM_MyGlobalMessage;

public

{Public declarations}

end;

var Form2: TForm2;

implementation

{$R *.DFM}

procedure TForm2.UMMyGlobalMessage(var AMessage: TMessage);

begin

Label1.Left := AMessage.WParam;

Label1.Top := AMessage.LParam;

Form2.Caption := 'Got It!';

end;

Вопрос:

Как обновить список дисков компонента TDriveComboBox, учитывая, что могут быть подключены/отключены сетевые диски и произведена "горячая замена" plug&play дисков?

Ответ:

Следующий пример вызывает защищенный (protected) метод класса TDriveComboBox BuildList() для регенерации списка дисков. (использовая так наз. "class cracer")

Пример:

type TNewDriveComboBox = class(TDriveComboBox) //это наш "class cracer"

end;

procedure TForm1.Button1Click(Sender: TObject);

var Drive : char;

begin

Drive := DriveComboBox1.Drive;

TNewDriveComboBox(DriveComboBox1).BuildList; //вызываем защищенный метод родительского класса

DriveComboBox1.Drive := Drive;

end;

Вопрос:

Как программно заставить выпасть меню?

Ответ:

В примере показано как показать меню и выбрать в нем какой-то пункт, эмулируя нажатие "быстрой клавиши" пункта меню. Если у Вашего пункта меню нет "быстрой клавиши" Вы можете посылать комбинации VK_MENU, VK_LEFT, VK_DOWN, и VK_RETURN, чтобы программно "путешествовать" по меню.

Пример:

procedure TForm1.Button1Click(Sender: TObject);

begin

//Allow button to finish painting in response to the click

Application.ProcessMessages;

{Alt Key Down}

keybd_Event(VK_MENU, 0, 0, 0);

{F Key Down - Drops the menu down}

keybd_Event(ord('F'), 0, 0, 0);

{F Key Up}

keybd_Event(ord('F'), 0, KEYEVENTF_KEYUP, 0);

{Alt Key Up}

keybd_Event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);

{F Key Down}

keybd_Event(ord('S'), 0, 0, 0);

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

Интервал:

Закладка:

Сделать

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

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


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

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

x