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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

PtArray[2] := Point(100, 100);

PtArray[3] := Point(100, 0);

PtArray[4] := Point(0, 0);

PtCounts[0] := 5;

PtArray[5] := Point(25, 25);

PtArray[6] := Point(25, 75);

PtArray[7] := Point(75, 75);

PtArray[8] := Point(75, 25);

PtArray[9] := Point(25, 25);

PtCounts[1] := 5;

PolyPolygon(Form1.Canvas.Handle, PtArray,PtCounts,2);

end;

Вопрос:

Как создать невизуальный компонент без иконки, которая изображается в палитре компонентов в "design-time" (вроде TField)?

Ответ:

Невизуальные компоненты без иконки удобны для субкомпонентов, связанных с какими-то другими компонентами. Создайте компонент как обычно, но используйте RegisterNoIcon вместо RegisterComponent.

Вопрос:

Как показывать нестандартный встроенный редактор (inplace editor) в ячейке stringgrid (например combobox).

Ответ:

См. пример

Пример:

procedure TForm1.FormCreate(Sender: TObject);

begin

{Высоту combobox'а не изменишь, так что вместо combobox'а будем изменять высоту строки grid'а !}

StringGrid1.DefaultRowHeight := ComboBox1.Height;

{Спрятать combobox}

ComboBox1.Visible := False;

ComboBox1.Items.Add('Delphi Kingdom');

ComboBox1.Items.Add('Королевство Дельфи');

end;

procedure TForm1.ComboBox1Change(Sender: TObject);

begin

{Перебросим выбранное в значение из ComboBox в grid}

StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] :=ComboBox1.Items[ComboBox1.ItemIndex];

ComboBox1.Visible := False;

StringGrid1.SetFocus;

end;

procedure TForm1.ComboBox1Exit(Sender: TObject);

begin

{Перебросим выбранное в значение из ComboBox в grid}

StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] :=ComboBox1.Items[ComboBox1.ItemIndex];

ComboBox1.Visible := False;

StringGrid1.SetFocus;

end;

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);

var R: TRect;

begin

if ((ACol = 3) AND (ARow <> 0)) then begin

{Ширина и положение ComboBox должно соответствовать ячейке StringGrid}

R := StringGrid1.CellRect(ACol, ARow);

R.Left := R.Left + StringGrid1.Left;

R.Right := R.Right + StringGrid1.Left;

R.Top := R.Top + StringGrid1.Top;

R.Bottom := R.Bottom + StringGrid1.Top;

ComboBox1.Left := R.Left + 1;

ComboBox1.Top := R.Top + 1;

ComboBox1.Width := (R.Right + 1) - R.Left;

ComboBox1.Height := (R.Bottom + 1) - R.Top;

{Покажем combobox}

ComboBox1.Visible := True;

ComboBox1.SetFocus;

end;

CanSelect := True;

end;

Вопрос:

Как узнать есть ли в заданном CD-ROM'е Audio CD?

Ответ:

Можно использовать функцию Windows API GetDriveType() чтобы определить является ли дисковод CD-ROM'мом. И функцию API GetVolumeInformation() чтобы проверить VolumeName на равенство 'Audio CD'.

Пример:

function IsAudioCD(Drive : char) : bool;

var

DrivePath : string;

MaximumComponentLength : DWORD;

FileSystemFlags : DWORD;

VolumeName : string;

Begin

result := false;

DrivePath := Drive + ':\';

if GetDriveType(PChar(DrivePath)) <> DRIVE_CDROM then exit;

SetLength(VolumeName, 64);

GetVolumeInformation(PChar(DrivePath),PChar(VolumeName), Length(VolumeName),nil,MaximumComponentLength,FileSystemFlags,nil,0);

if lStrCmp(PChar(VolumeName),'Audio CD') = 0 then result := true;

end;

function PlayAudioCD(Drive : char) : bool;

var mp : TMediaPlayer;

begin

result := false;

Application.ProcessMessages;

if not IsAudioCD(Drive) then exit;

mp := TMediaPlayer.Create(nil);

mp.Visible := false;

mp.Parent := Application.MainForm;

mp.Shareable := true;

mp.DeviceType := dtCDAudio;

mp.FileName := Drive + ':';

mp.Shareable := true;

mp.Open;

Application.ProcessMessages;

mp.Play;

Application.ProcessMessages;

mp.Close;

Application.ProcessMessages;

mp.free;

result := true;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

if not PlayAudioCD('D') then ShowMessage('Not an Audio CD');

end;

Вопрос:

Как узнать есть ли у мыши колесико?

Ответ:

Свойство "WheelPresent" глобального обьекта "mouse".

Вопрос:

События KeyPress и KeyDown не вызываются для клавиши Tab — как определить, что она была нажата?

Ответ:

На уровне формы клавиша tab обычно обрабатывается Windows. В примере создается обработчик события CM_Dialog для перехвата Dialog keys.

Пример:

type TForm1 = class(TForm)

private

procedure CMDialogKey( Var msg: TCMDialogKey ); message CM_DIALOGKEY;

end;

var Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.CMDialogKey(var msg: TCMDialogKey);

begin

if msg.Charcode <> VK_TAB then inherited;

end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

if Key = VK_TAB then Form1.Caption := 'Tab Key Down!';

end;

Вопрос:

В чем отличие между Create(Self) и Create(Application)?

Ответ:

Self может быть использовано только в методе класса, и ссылается на текущий экземпляр класса. Таким образом "Self" в методе класса TForm1 ссылается на текущий экземпляр TForm1. При создании компонента Вы передаете его владельца (owner) в конструктор. При уничтожении формы или компонента автоматически уничтожаются и все компоненты владельцем которого она является. Таким образом если при создании формы передать в качестве владельца Application эта форма будет автоматически уничтожена при уничтожении Application. Если же при создании формы передать в качестве владельца другую форму, вновь созданная форма будет автоматически уничтоженн при уничтожении формы-владельца.

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

Интервал:

Закладка:

Сделать

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

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


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

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

x